X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=form%2Ffty_regex.c;h=3a8b404714bf29fa95575aaaabdaad91e5ae0aa4;hp=2c0a4caa6bb312d82247a92ecec8ea4cc9d83989;hb=e5d1530ca229aef94a3c84ad33f8ae89f35c4045;hpb=c6540b9c89dda1a6a8bd681726831e8924176504;ds=sidebyside diff --git a/form/fty_regex.c b/form/fty_regex.c index 2c0a4caa..3a8b4047 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.30 2020/05/24 01:40:20 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) @@ -333,14 +340,14 @@ static FIELDTYPE typeREGEXP = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_REGEXP = &typeREGEXP; +FORM_EXPORT_VAR(FIELDTYPE*) TYPE_REGEXP = &typeREGEXP; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from programming languages with restictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_REGEXP(void) { return TYPE_REGEXP;