X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_regex.c;h=65405621eafc5cadd2709be71d4a126afca26250;hp=2c0a4caa6bb312d82247a92ecec8ea4cc9d83989;hb=73dd18dba5148d708638caa25c085d82f704e972;hpb=c6540b9c89dda1a6a8bd681726831e8924176504 diff --git a/form/fty_regex.c b/form/fty_regex.c index 2c0a4caa..65405621 100644 --- a/form/fty_regex.c +++ b/form/fty_regex.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2012,2015 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -34,10 +35,17 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_regex.c,v 1.24 2010/01/23 21:14:37 tom Exp $") +MODULE_ID("$Id: fty_regex.c,v 1.29 2020/02/29 15:46:00 anonymous.maarten Exp $") -#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */ +#if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2 /* We prefer POSIX regex */ + +#if HAVE_PCRE2POSIX_H +#include +#elif HAVE_PCREPOSIX_H +#include +#else #include +#endif typedef struct { @@ -113,7 +121,7 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) if (rx) { - preg = typeMalloc(RegExp_Arg, 1); + preg = typeCalloc(RegExp_Arg, 1); if (preg) { @@ -123,9 +131,8 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) (REG_EXTENDED | REG_NOSUB | REG_NEWLINE))) { T((T_CREATE("regex_t %p"), (void *)preg->pRegExp)); - preg->refCount = typeMalloc(unsigned long, 1); - - *(preg->refCount) = 1; + if ((preg->refCount = typeMalloc(unsigned long, 1)) != 0) + *(preg->refCount) = 1; } else { @@ -151,9 +158,8 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) T((T_CREATE("RegExp_Arg %p"), pArg)); pArg->compiled_expression = NULL; - pArg->refCount = typeMalloc(unsigned long, 1); - - *(pArg->refCount) = 1; + if ((pArg->refCount = typeMalloc(unsigned long, 1)) != 0) + *(pArg->refCount) = 1; do { @@ -266,6 +272,7 @@ Free_RegularExpression_Type(void *argp MAYBE_UNUSED) { free(ap->refCount); regfree(ap->pRegExp); + free(ap->pRegExp); } #elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS if (ap->compiled_expression)