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
>
>

Reply via email to