X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fadt%2Fxmalloc.c;h=47ee42791d049f6622b08c5f3cbe17a810678675;hb=d72b7e3a579f396c1820c57179c2c82a596b8811;hp=cd750375cfff49f44ef0bd34d28ff01870d42c09;hpb=1ce363f80e6a204d4011f85813362d9bd1d0e7e4;p=libfirm diff --git a/ir/adt/xmalloc.c b/ir/adt/xmalloc.c index cd750375c..47ee42791 100644 --- a/ir/adt/xmalloc.c +++ b/ir/adt/xmalloc.c @@ -21,52 +21,45 @@ * @file * @brief implementation of xmalloc & friends * @author Markus Armbruster - * @version $Id$ */ /* @@@ ToDo: replace this file with the one from liberty. [reimplement xstrdup, ... ] */ -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif +#include "config.h" -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif +#include +#include +#include #include "xmalloc.h" #include "error.h" -static NORETURN xnomem(void) { - panic("out of memory"); +static NORETURN xnomem(void) +{ + /* Do not use panic() here, because it might try to allocate memory! */ + fputs("out of memory", stderr); + abort(); } -void *xmalloc(size_t size) { - void *res = malloc(size); +void *xmalloc(size_t size) +{ + void *res = malloc(size); - if (!res) xnomem(); - return res; + if (!res) xnomem(); + return res; } -void *xcalloc(size_t num, size_t size) { - void *res = calloc(num, size); +void *xrealloc(void *ptr, size_t size) +{ + /* ANSI blesses realloc (0, x) but SunOS chokes on it */ + void *res = ptr ? realloc (ptr, size) : malloc (size); - if (!res) xnomem(); - return res; + if (!res) xnomem(); + return res; } -void *xrealloc(void *ptr, size_t size) { - /* ANSI blesses realloc (0, x) but SunOS chokes on it */ - void *res = ptr ? realloc (ptr, size) : malloc (size); - - if (!res) xnomem(); - return res; -} - -char *xstrdup(const char *str) { - size_t len = strlen (str) + 1; - return memcpy((xmalloc) (len), str, len); +char *xstrdup(const char *str) +{ + size_t len = strlen (str) + 1; + return (char*) memcpy(xmalloc(len), str, len); }