]> git.ipfire.org Git - thirdparty/bash.git/blame - lib/readline/xmalloc.c
Imported from ../bash-2.04.tar.gz.
[thirdparty/bash.git] / lib / readline / 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
JA
20 Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
21#define READLINE_LIBRARY
726f6388 22
ccc6cda3
JA
23#if defined (HAVE_CONFIG_H)
24#include <config.h>
25#endif
26
726f6388
JA
27#include <stdio.h>
28
29#if defined (HAVE_STDLIB_H)
30# include <stdlib.h>
31#else
32# include "ansi_stdlib.h"
33#endif /* HAVE_STDLIB_H */
34
bb70624e 35#include "xmalloc.h"
726f6388
JA
36
37/* **************************************************************** */
38/* */
39/* Memory Allocation and Deallocation. */
40/* */
41/* **************************************************************** */
42
bb70624e
JA
43static void
44memory_error_and_abort (fname)
45 char *fname;
46{
47 fprintf (stderr, "%s: out of virtual memory\n", fname);
48 exit (2);
49}
50
726f6388
JA
51/* Return a pointer to free()able block of memory large enough
52 to hold BYTES number of bytes. If the memory cannot be allocated,
53 print an error message and abort. */
54char *
55xmalloc (bytes)
56 int bytes;
57{
ccc6cda3 58 char *temp;
726f6388 59
ccc6cda3
JA
60 temp = (char *)malloc (bytes);
61 if (temp == 0)
726f6388
JA
62 memory_error_and_abort ("xmalloc");
63 return (temp);
64}
65
66char *
67xrealloc (pointer, bytes)
bb70624e 68 PTR_T pointer;
726f6388
JA
69 int bytes;
70{
71 char *temp;
72
ccc6cda3 73 temp = pointer ? (char *)realloc (pointer, bytes) : (char *)malloc (bytes);
726f6388 74
ccc6cda3 75 if (temp == 0)
726f6388
JA
76 memory_error_and_abort ("xrealloc");
77 return (temp);
78}
79
ccc6cda3
JA
80/* Use this as the function to call when adding unwind protects so we
81 don't need to know what free() returns. */
82void
83xfree (string)
bb70624e 84 PTR_T string;
ccc6cda3
JA
85{
86 if (string)
87 free (string);
726f6388 88}