]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - readline/xmalloc.c
clarify that the import contains local changes as well.
[thirdparty/binutils-gdb.git] / readline / xmalloc.c
CommitLineData
d60d9f65
SS
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
1b17e766 10 Free Software Foundation; either version 2, or (at your option) any
d60d9f65
SS
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
1b17e766
EZ
20 Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */
21#define READLINE_LIBRARY
d60d9f65
SS
22
23#if defined (HAVE_CONFIG_H)
24#include <config.h>
25#endif
26
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
1b17e766 35#include "xmalloc.h"
d60d9f65
SS
36
37/* **************************************************************** */
38/* */
39/* Memory Allocation and Deallocation. */
40/* */
41/* **************************************************************** */
42
1b17e766
EZ
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
d60d9f65
SS
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. */
9255ee31 54PTR_T
d60d9f65 55xmalloc (bytes)
9255ee31 56 size_t bytes;
d60d9f65 57{
9255ee31 58 PTR_T temp;
d60d9f65 59
9255ee31 60 temp = malloc (bytes);
d60d9f65
SS
61 if (temp == 0)
62 memory_error_and_abort ("xmalloc");
63 return (temp);
64}
65
9255ee31 66PTR_T
d60d9f65 67xrealloc (pointer, bytes)
1b17e766 68 PTR_T pointer;
9255ee31 69 size_t bytes;
d60d9f65 70{
9255ee31 71 PTR_T temp;
d60d9f65 72
9255ee31 73 temp = pointer ? realloc (pointer, bytes) : malloc (bytes);
d60d9f65
SS
74
75 if (temp == 0)
76 memory_error_and_abort ("xrealloc");
77 return (temp);
78}
79
d60d9f65
SS
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)
1b17e766 84 PTR_T string;
d60d9f65
SS
85{
86 if (string)
87 free (string);
88}