Mercurial > hg > octave-nkf > gnulib-hg
changeset 17235:e101c2620c25
regex: port to hosts where malloc (0) == NULL
Reported by Aharon Robbins in
<http://sourceware.org/ml/libc-alpha/2012-12/msg00456.html>.
* lib/regex_internal.c (re_node_set_alloc):
Don't assume that malloc (0) yields nonnull.
* lib/regex_internal.h (MALLOC_0_IS_NONNULL): New macro.
* m4/regex.m4 (gl_PREREQ_REGEX): Require gl_EEMALLOC.
* modules/regex (Files): Add m4/eealloc.m4.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Sat, 29 Dec 2012 22:56:31 -0800 |
parents | de636633c6cd |
children | d7e0ca139637 |
files | ChangeLog lib/regex_internal.c lib/regex_internal.h m4/regex.m4 modules/regex |
diffstat | 5 files changed, 18 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2012-12-29 Paul Eggert <eggert@cs.ucla.edu> + regex: port to hosts where malloc (0) == NULL + Reported by Aharon Robbins in + <http://sourceware.org/ml/libc-alpha/2012-12/msg00456.html>. + * lib/regex_internal.c (re_node_set_alloc): + Don't assume that malloc (0) yields nonnull. + * lib/regex_internal.h (MALLOC_0_IS_NONNULL): New macro. + * m4/regex.m4 (gl_PREREQ_REGEX): Require gl_EEMALLOC. + * modules/regex (Files): Add m4/eealloc.m4. + regex: port to C89 Reported by Aharon Robbins in <http://sourceware.org/ml/libc-alpha/2012-12/msg00456.html>.
--- a/lib/regex_internal.c +++ b/lib/regex_internal.c @@ -974,7 +974,7 @@ set->alloc = size; set->nelem = 0; set->elems = re_malloc (Idx, size); - if (BE (set->elems == NULL, 0)) + if (BE (set->elems == NULL, 0) && (MALLOC_0_IS_NONNULL || size != 0)) return REG_ESPACE; return REG_NOERROR; }
--- a/lib/regex_internal.h +++ b/lib/regex_internal.h @@ -464,6 +464,12 @@ # endif #endif +#ifdef _LIBC +# define MALLOC_0_IS_NONNULL 1 +#elif !defined MALLOC_0_IS_NONNULL +# define MALLOC_0_IS_NONNULL 0 +#endif + #ifndef MAX # define MAX(a,b) ((a) < (b) ? (b) : (a)) #endif
--- a/m4/regex.m4 +++ b/m4/regex.m4 @@ -220,6 +220,7 @@ AC_REQUIRE([AC_C_INLINE]) AC_REQUIRE([AC_C_RESTRICT]) AC_REQUIRE([AC_TYPE_MBSTATE_T]) + AC_REQUIRE([gl_EEMALLOC]) AC_CHECK_HEADERS([libintl.h]) AC_CHECK_FUNCS_ONCE([isblank iswctype wcscoll]) AC_CHECK_DECLS([isblank], [], [], [[#include <ctype.h>]])