X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fadt%2Fxmalloc.c;h=17e7bda5e6d778f4f45dc2e21fdb353c0c590f05;hb=b1ac8fe5c7b3b462f66a99e6c780be9826414b7d;hp=7680c4be6cd0c37045d6e7996ed6d16f19e5ad0f;hpb=23e72739d7e9e4c5a1a27cc1101e53b923ad6cd4;p=libfirm diff --git a/ir/adt/xmalloc.c b/ir/adt/xmalloc.c index 7680c4be6..17e7bda5e 100644 --- a/ir/adt/xmalloc.c +++ b/ir/adt/xmalloc.c @@ -1,71 +1,51 @@ /* - * Project: libFIRM - * File name: ir/adt/xmalloc.c - * Purpose: Xmalloc --- never failing wrappers for malloc() & friends. - * Author: Markus Armbruster - * Modified by: - * Created: 1999 by getting from fiasco - * CVS-ID: $Id$ - * Copyright: (c) 1995, 1996 Markus Armbruster - * Licence: This file protected by GPL - GNU GENERAL PUBLIC LICENSE. + * This file is part of libFirm. + * Copyright (C) 2012 University of Karlsruhe. + */ + +/** + * @file + * @brief implementation of xmalloc & friends + * @author Markus Armbruster */ /* @@@ ToDo: replace this file with the one from liberty. [reimplement xstrdup, ... ] */ +#include "config.h" -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#ifdef HAVE_ALLOCA_H -# include -#endif -#ifdef HAVE_MALLOC_H -# include -#endif -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif +#include +#include +#include #include "xmalloc.h" -#include "panic.h" - -void * -xmalloc(size_t size) { - void *res = malloc (size); +#include "error.h" - if (!res) xnomem(); - return res; +static NORETURN xnomem(void) +{ + /* Do not use panic() here, because it might try to allocate memory! */ + fputs("out of memory", stderr); + abort(); } -void *xcalloc(size_t num, size_t size) { - void *res = calloc(num, size); +void *xmalloc(size_t size) +{ + void *res = 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); +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; } - -char * -xstrdup(const char *str) { - size_t len = strlen (str) + 1; - return memcpy ((xmalloc) (len), str, len); -} - - -void -xnomem(void) { - panic("out of memory"); +char *xstrdup(const char *str) +{ + size_t len = strlen (str) + 1; + return (char*) memcpy(xmalloc(len), str, len); }