X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Falloca.c;h=3a1f4e273a56b8f4f65e39c35577a1826343de24;hb=ffb0da8f73d65580025dfd9bc0705cffe0281d74;hp=c4db187da555e7c1eaf383fb2631670db8520ab4;hpb=968cc4b0e8a516793b5c095de542744b17df05fa;p=gnulib.git diff --git a/lib/alloca.c b/lib/alloca.c index c4db187da..3a1f4e273 100644 --- a/lib/alloca.c +++ b/lib/alloca.c @@ -21,9 +21,9 @@ allocating any. It is a good idea to use alloca(0) in your main control loop, etc. to force garbage collection. */ -#ifdef HAVE_CONFIG_H -# include -#endif +#include + +#include #include #include @@ -31,13 +31,12 @@ #ifdef emacs # include "lisp.h" # include "blockinput.h" -# define xalloc_die() memory_full () # ifdef EMACS_FREE # undef free # define free EMACS_FREE # endif #else -# include +# define memory_full() abort () #endif /* If compiling with GCC 2, this file's not needed. */ @@ -196,25 +195,25 @@ alloca (size_t size) { /* Address of header. */ - register void *new; + register header *new; size_t combined_size = sizeof (header) + size; if (combined_size < sizeof (header)) - xalloc_die (); + memory_full (); - new = xmalloc (combined_size); + new = malloc (combined_size); - if (new == 0) - abort(); + if (! new) + memory_full (); - ((header *) new)->h.next = last_alloca_header; - ((header *) new)->h.deep = depth; + new->h.next = last_alloca_header; + new->h.deep = depth; - last_alloca_header = (header *) new; + last_alloca_header = new; /* User storage begins just after header. */ - return (void *) ((char *) new + sizeof (header)); + return (void *) (new + 1); } }