X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_regex.c;h=45ea1ab375ca6e983f55f5c41493c6b8ab38ff72;hp=2a95c126a5197009cae778b4bda9a1210f32bc13;hb=896224bea6196d73d03e39b1a266887d6f2cb6ff;hpb=f5da57ad7eb397b1001e2fca9cb0e278a6564716 diff --git a/form/fty_regex.c b/form/fty_regex.c index 2a95c126..45ea1ab3 100644 --- a/form/fty_regex.c +++ b/form/fty_regex.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. * + * Copyright (c) 1998-2015,2018 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 +34,17 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_regex.c,v 1.23 2009/11/07 20:17:58 tom Exp $") +MODULE_ID("$Id: fty_regex.c,v 1.27 2018/07/14 21:41:39 tom Exp $") -#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */ +#if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2 /* We prefer POSIX regex */ + +#if HAVE_PCRE2_POSIX_H +#include +#elif HAVE_PCREPOSIX_H +#include +#else #include +#endif typedef struct { @@ -113,19 +120,18 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) if (rx) { - preg = typeMalloc(RegExp_Arg, 1); + preg = typeCalloc(RegExp_Arg, 1); if (preg) { - T((T_CREATE("RegExp_Arg %p"), preg)); + T((T_CREATE("RegExp_Arg %p"), (void *)preg)); if (((preg->pRegExp = typeMalloc(regex_t, 1)) != 0) && !regcomp(preg->pRegExp, rx, (REG_EXTENDED | REG_NOSUB | REG_NEWLINE))) { - T((T_CREATE("regex_t %p"), preg->pRegExp)); - preg->refCount = typeMalloc(unsigned long, 1); - - *(preg->refCount) = 1; + T((T_CREATE("regex_t %p"), (void *)preg->pRegExp)); + if ((preg->refCount = typeMalloc(unsigned long, 1)) != 0) + *(preg->refCount) = 1; } else { @@ -151,9 +157,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 +271,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)