X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fadt%2Fxmalloc.c;h=cd750375cfff49f44ef0bd34d28ff01870d42c09;hb=c7dc950ac0cdd7d24acffb798b5867d0db5dd7c8;hp=f2b1554e4bb1aa3dda4e71143e3e6e9cb0b6a24a;hpb=c6f33d8ee58e20d5bbe4d663c17813e55e643388;p=libfirm diff --git a/ir/adt/xmalloc.c b/ir/adt/xmalloc.c index f2b1554e4..cd750375c 100644 --- a/ir/adt/xmalloc.c +++ b/ir/adt/xmalloc.c @@ -1,68 +1,72 @@ /* - * 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. + * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. + * + * This file is part of libFirm. + * + * This file may be distributed and/or modified under the terms of the + * GNU General Public License version 2 as published by the Free Software + * Foundation and appearing in the file LICENSE.GPL included in the + * packaging of this file. + * + * Licensees holding valid libFirm Professional Edition licenses may use + * this file in accordance with the libFirm Commercial License. + * Agreement provided with the Software. + * + * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE + * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE. + */ + +/** + * @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 -#ifdef HAVE_ALLOCA_H -#include -#endif -#ifdef HAVE_MALLOC_H -#include -#endif #ifdef HAVE_STRING_H -#include +# include +#endif +#ifdef HAVE_STDLIB_H +# include #endif - -#include #include "xmalloc.h" -#include "panic.h" +#include "error.h" -void * -xmalloc(size_t size) { - void *res = malloc (size); +static NORETURN xnomem(void) { + panic("out of memory"); +} + +void *xmalloc(size_t size) { + void *res = malloc(size); if (!res) xnomem(); + return res; +} - memset(res, 0x00, size); +void *xcalloc(size_t num, size_t size) { + void *res = calloc(num, size); + if (!res) xnomem(); return res; } - -void * -xrealloc(void *ptr, size_t 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 (); - + if (!res) xnomem(); return res; } - -char * -xstrdup(const char *str) { +char *xstrdup(const char *str) { size_t len = strlen (str) + 1; - return memcpy ((xmalloc) (len), str, len); -} - - -void -xnomem(void) { - panic("out of memory"); + return memcpy((xmalloc) (len), str, len); }