On Fri, Dec 21, 2012 at 12:35:17AM -0800, Paul Eggert wrote:
> -void *alloca (size_t);
> -#    endif
> -#   endif
> +#  ifdef  __cplusplus
> +extern "C"
>  #  endif
> +void *alloca (size_t);
>  # endif
>  #endif
>  ]],                               [[char *p = (char *) alloca (1);

Actually I still don't understand why the fall through case is
void *alloca (size_t);
In the documentation case, if you don't HAVE_ALLOCA, why declare alloca()?
In the AC_FUNC_ALLOCA case, why look for a function which isn't declared
in a public header nor is one of the builtins of the compilers you know about?

I can still see this failing in a slightly contrived way: imagine not having
an alloca which is a macro, but which is a real function. My stdlib.h will
then declare alloca(). The test in AC_FUNC_ALLOCA will then decare alloca
again in the fall through case.

Cheers,

Patrick

PS my stdlib.h has:

#if defined(alloca) && (alloca == __builtin_alloca) && \
        defined(__GNUC__) && (__GNUC__ < 2)
void    *alloca(int);     /* built-in for gcc */
#elif defined(__PCC__) && !defined(__GNUC__)
#define alloca(size) __builtin_alloca(size)
#else
void    *alloca(size_t);
#endif /* __GNUC__ */

Reply via email to