/src/wml_backend/p2_mp4h/lib/xmalloc.c
C | 133 lines | 88 code | 21 blank | 24 comment | 17 complexity | 4a2e17390058adda168dbb61867e91e1 MD5 | raw file
Possible License(s): GPL-2.0, AGPL-1.0, LGPL-2.0
- /* xmalloc.c -- malloc with out of memory checking
- Copyright (C) 1990, 91, 92, 93, 94, 95, 96 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2, or (at your option)
- any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
- #if HAVE_CONFIG_H
- # include <config.h>
- #endif
- #include <sys/types.h>
- #if STDC_HEADERS
- # include <stdlib.h>
- #else
- void *calloc ();
- void *malloc ();
- void *realloc ();
- void free ();
- #endif
- #if ENABLE_NLS
- # include <libintl.h>
- # define _(Text) gettext (Text)
- #else
- # define textdomain(Domain)
- # define _(Text) Text
- #endif
- #include "error.h"
- #ifndef EXIT_FAILURE
- # define EXIT_FAILURE 1
- #endif
- /* Prototypes for functions defined here. */
- #if defined (__STDC__) && __STDC__
- static void *fixup_null_alloc (size_t n);
- void *xmalloc (size_t n);
- void *xcalloc (size_t n, size_t s);
- void *xrealloc (void *p, size_t n);
- void xfree (void *p);
- #endif
- /* Exit value when the requested amount of memory is not available.
- The caller may set it to some other value. */
- int xmalloc_exit_failure = EXIT_FAILURE;
- #if defined(HAVE_STDARG_H) && (defined(HAVE_VPRINTF) || defined(HAVE_DOPRNT))
- void error (int, int, const char *, ...);
- #else
- void error ();
- #endif
- static void *
- fixup_null_alloc (n)
- size_t n;
- {
- void *p;
- p = 0;
- if (n == 0)
- p = malloc ((size_t) 1);
- if (p == 0)
- error (xmalloc_exit_failure, 0, _("Memory exhausted"));
- return p;
- }
- /* Allocate N bytes of memory dynamically, with error checking. */
- void *
- xmalloc (n)
- size_t n;
- {
- void *p;
- p = malloc (n);
- if (p == 0)
- p = fixup_null_alloc (n);
- return p;
- }
- /* Allocate memory for N elements of S bytes, with error checking. */
- void *
- xcalloc (n, s)
- size_t n, s;
- {
- void *p;
- p = calloc (n, s);
- if (p == 0)
- p = fixup_null_alloc (n);
- return p;
- }
- /* Change the size of an allocated block of memory P to N bytes,
- with error checking.
- If P is NULL, run xmalloc. */
- void *
- xrealloc (p, n)
- void *p;
- size_t n;
- {
- if (p == 0)
- return xmalloc (n);
- p = realloc (p, n);
- if (p == 0)
- p = fixup_null_alloc (n);
- return p;
- }
- void
- xfree (p)
- void *p;
- {
- if (p != 0)
- free(p);
- p = 0;
- }