Very well. I will deal with it myself. Thanks,
Arnold Bruno Haible <br...@clisp.org> wrote: > Hi Arnold, > > > This code in regex_internal.c: > > > > ------------------------------------- > > static reg_errcode_t > > __attribute_warn_unused_result__ > > re_node_set_alloc (re_node_set *set, Idx size) > > { > > set->alloc = size; > > set->nelem = 0; > > set->elems = re_malloc (Idx, size); > > if (__glibc_unlikely (set->elems == NULL)) > > return REG_ESPACE; > > return REG_NOERROR; > > } > > ------------------------------------- > > > > If size is zero, malloc() is called with zero. IIRC, it's formally > > undefined what happens if malloc(0) is called, and NULL is a possibly > > valid result. If used with a malloc() that does return NULL, compilation > > of a regex fails. regex needs to take this into account. > > Yes, and it already does: The module 'regex' has a dependency towards > the module 'malloc-gnu'. The module malloc-gnu guarantees that malloc(0) > is non-NULL except in out-of-memory situations. > > > This happened in gawk using the Persistent Memory Allocator (PMA). > > > > I have worked around it with additional gawk-specific code that sets > > size to 1 if it's 0. > > Yeah, IIRC gawk does not use gnulib-tool and therefore has to do things > differently than gnulib. > > Bruno > >