What are the requirements of the 'regex' module on platforms that don't have
alloca()?

All uses of alloca are inside regexec.c and are guarded by a call to
if (__libc_use_alloca (n)), which expands to if (0).

This means:
  1) The library does not really need to provide an alloca function.
  2) But it needs a stub, for when compiling without optimization, to avoid
     a link error.

I'm therefore applying this:


2010-05-24  Bruno Haible  <br...@clisp.org>

        regex: Don't require alloca.
        * modules/regex (Depends-on): Remove alloca. Add alloca-opt.
        * lib/regex_internal.h (alloca): Ensure it's defined even if we call it
        only inside if (0).

--- lib/regex_internal.h.orig   Mon May 24 12:16:22 2010
+++ lib/regex_internal.h        Mon May 24 12:15:28 2010
@@ -467,6 +467,8 @@
 # else
 /* alloca is implemented with malloc, so just use malloc.  */
 #  define __libc_use_alloca(n) 0
+#  undef alloca
+#  define alloca(n) malloc (n)
 # endif
 #endif
 
--- modules/regex.orig  Mon May 24 12:16:22 2010
+++ modules/regex       Mon May 24 12:13:43 2010
@@ -12,7 +12,7 @@
 m4/mbstate_t.m4
 
 Depends-on:
-alloca
+alloca-opt
 btowc
 extensions
 gettext-h

Reply via email to