]> git.ipfire.org Git - thirdparty/bash.git/blame - lib/malloc/xmalloc.c
Imported from ../bash-2.04.tar.gz.
[thirdparty/bash.git] / lib / malloc / xmalloc.c
CommitLineData
726f6388
JA
1/* xmalloc.c -- safe versions of malloc and realloc */
2
3/* Copyright (C) 1991 Free Software Foundation, Inc.
4
5 This file is part of GNU Readline, a library for reading lines
6 of text with interactive input and history editing.
7
8 Readline is free software; you can redistribute it and/or modify it
9 under the terms of the GNU General Public License as published by the
bb70624e 10 Free Software Foundation; either version 2, or (at your option) any
726f6388
JA
11 later version.
12
13 Readline is distributed in the hope that it will be useful, but
14 WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with Readline; see the file COPYING. If not, write to the Free
bb70624e 20 Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
726f6388 21
ccc6cda3
JA
22#if defined (HAVE_CONFIG_H)
23#include <config.h>
24#endif
25
726f6388
JA
26#include <stdio.h>
27
28#if defined (HAVE_STDLIB_H)
29# include <stdlib.h>
30#else
31# include "ansi_stdlib.h"
32#endif /* HAVE_STDLIB_H */
33
34static void memory_error_and_abort ();
35
36/* **************************************************************** */
37/* */
38/* Memory Allocation and Deallocation. */
39/* */
40/* **************************************************************** */
41
42/* Return a pointer to free()able block of memory large enough
43 to hold BYTES number of bytes. If the memory cannot be allocated,
44 print an error message and abort. */
45char *
46xmalloc (bytes)
47 int bytes;
48{
ccc6cda3 49 char *temp;
726f6388 50
ccc6cda3
JA
51 temp = (char *)malloc (bytes);
52 if (temp == 0)
726f6388
JA
53 memory_error_and_abort ("xmalloc");
54 return (temp);
55}
56
57char *
58xrealloc (pointer, bytes)
59 char *pointer;
60 int bytes;
61{
62 char *temp;
63
ccc6cda3 64 temp = pointer ? (char *)realloc (pointer, bytes) : (char *)malloc (bytes);
726f6388 65
ccc6cda3 66 if (temp == 0)
726f6388
JA
67 memory_error_and_abort ("xrealloc");
68 return (temp);
69}
70
71static void
72memory_error_and_abort (fname)
73 char *fname;
74{
ccc6cda3
JA
75 fprintf (stderr, "%s: out of virtual memory\n", fname);
76 exit (2);
77}
78
79/* Use this as the function to call when adding unwind protects so we
80 don't need to know what free() returns. */
81void
82xfree (string)
83 char *string;
84{
85 if (string)
86 free (string);
726f6388 87}