diff options
| author | svn2git <svn2git@FreeBSD.org> | 1994-05-01 08:00:00 +0000 | 
|---|---|---|
| committer | svn2git <svn2git@FreeBSD.org> | 1994-05-01 08:00:00 +0000 | 
| commit | a16f65c7d117419bd266c28a1901ef129a337569 (patch) | |
| tree | 2626602f66dc3551e7a7c7bc9ad763c3bc7ab40a /gnu/usr.bin/pr/xmalloc.c | |
| parent | 8503f4f13f77abf7adc8f7e329c6f9c1d52b6a20 (diff) | |
Diffstat (limited to 'gnu/usr.bin/pr/xmalloc.c')
| -rw-r--r-- | gnu/usr.bin/pr/xmalloc.c | 88 | 
1 files changed, 88 insertions, 0 deletions
| diff --git a/gnu/usr.bin/pr/xmalloc.c b/gnu/usr.bin/pr/xmalloc.c new file mode 100644 index 000000000000..58a81b5abbce --- /dev/null +++ b/gnu/usr.bin/pr/xmalloc.c @@ -0,0 +1,88 @@ +/* xmalloc.c -- malloc with out of memory checking +   Copyright (C) 1990, 1991, 1993 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., 675 Mass Ave, Cambridge, MA 02139, USA.  */ + +#ifdef HAVE_CONFIG_H +#if defined (CONFIG_BROKETS) +/* We use <config.h> instead of "config.h" so that a compilation +   using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h +   (which it would do because it found this file in $srcdir).  */ +#include <config.h> +#else +#include "config.h" +#endif +#endif + +#if __STDC__ +#define VOID void +#else +#define VOID char +#endif + +#include <sys/types.h> + +#if STDC_HEADERS +#include <stdlib.h> +#else +VOID *malloc (); +VOID *realloc (); +void free (); +#endif + +#if __STDC__ && defined (HAVE_VPRINTF) +void error (int, int, char const *, ...); +#else +void error (); +#endif + +/* Allocate N bytes of memory dynamically, with error checking.  */ + +VOID * +xmalloc (n) +     size_t n; +{ +  VOID *p; + +  p = malloc (n); +  if (p == 0) +    /* Must exit with 2 for `cmp'.  */ +    error (2, 0, "virtual memory exhausted"); +  return p; +} + +/* Change the size of an allocated block of memory P to N bytes, +   with error checking. +   If P is NULL, run xmalloc. +   If N is 0, run free and return NULL.  */ + +VOID * +xrealloc (p, n) +     VOID *p; +     size_t n; +{ +  if (p == 0) +    return xmalloc (n); +  if (n == 0) +    { +      free (p); +      return 0; +    } +  p = realloc (p, n); +  if (p == 0) +    /* Must exit with 2 for `cmp'.  */ +    error (2, 0, "virtual memory exhausted"); +  return p; +} | 
