Put in proper address information for Poul-Henning Kamp.
[unix-history] / gnu / usr.bin / pr / xmalloc.c
CommitLineData
9a35093c 1/* xmalloc.c -- malloc with out of memory checking
c9764fdb 2 Copyright (C) 1990, 1991, 1993 Free Software Foundation, Inc.
9a35093c
NW
3
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2, or (at your option)
7 any later version.
8
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
17
c9764fdb
NW
18#ifdef HAVE_CONFIG_H
19#if defined (CONFIG_BROKETS)
20/* We use <config.h> instead of "config.h" so that a compilation
21 using -I. -I$srcdir will use ./config.h rather than $srcdir/config.h
22 (which it would do because it found this file in $srcdir). */
23#include <config.h>
24#else
25#include "config.h"
26#endif
27#endif
28
29#if __STDC__
30#define VOID void
31#else
32#define VOID char
33#endif
34
35#include <sys/types.h>
36
37#if STDC_HEADERS
9a35093c
NW
38#include <stdlib.h>
39#else
c9764fdb
NW
40VOID *malloc ();
41VOID *realloc ();
9a35093c
NW
42void free ();
43#endif
44
c9764fdb
NW
45#if __STDC__ && defined (HAVE_VPRINTF)
46void error (int, int, char const *, ...);
47#else
9a35093c 48void error ();
c9764fdb 49#endif
9a35093c
NW
50
51/* Allocate N bytes of memory dynamically, with error checking. */
52
c9764fdb 53VOID *
9a35093c 54xmalloc (n)
c9764fdb 55 size_t n;
9a35093c 56{
c9764fdb 57 VOID *p;
9a35093c
NW
58
59 p = malloc (n);
60 if (p == 0)
61 /* Must exit with 2 for `cmp'. */
62 error (2, 0, "virtual memory exhausted");
63 return p;
64}
65
66/* Change the size of an allocated block of memory P to N bytes,
67 with error checking.
68 If P is NULL, run xmalloc.
69 If N is 0, run free and return NULL. */
70
c9764fdb 71VOID *
9a35093c 72xrealloc (p, n)
c9764fdb
NW
73 VOID *p;
74 size_t n;
9a35093c
NW
75{
76 if (p == 0)
77 return xmalloc (n);
78 if (n == 0)
79 {
80 free (p);
81 return 0;
82 }
83 p = realloc (p, n);
84 if (p == 0)
85 /* Must exit with 2 for `cmp'. */
86 error (2, 0, "virtual memory exhausted");
87 return p;
88}