]> git.ipfire.org Git - thirdparty/bash.git/blame - lib/malloc/xmalloc.c
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / lib / malloc / xmalloc.c
CommitLineData
726f6388
JA
1/* xmalloc.c -- safe versions of malloc and realloc */
2
b80f6443 3/* Copyright (C) 1991-2003 Free Software Foundation, Inc.
726f6388
JA
4
5 This file is part of GNU Readline, a library for reading lines
6 of text with interactive input and history editing.
7
3185942a
JA
8 Readline is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
726f6388 12
3185942a
JA
13 Readline is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
726f6388
JA
17
18 You should have received a copy of the GNU General Public License
3185942a
JA
19 along with Readline. If not, see <http://www.gnu.org/licenses/>.
20*/
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
f73dda09
JA
34/* Generic pointer type. */
35#ifndef PTR_T
36
37#if defined (__STDC__)
38# define PTR_T void *
39#else
40# define PTR_T char *
41#endif
42
43#endif /* PTR_T */
726f6388
JA
44
45/* **************************************************************** */
46/* */
47/* Memory Allocation and Deallocation. */
48/* */
49/* **************************************************************** */
50
f73dda09
JA
51static void
52memory_error_and_abort (fname)
53 char *fname;
54{
55 fprintf (stderr, "%s: out of virtual memory\n", fname);
56 exit (2);
57}
58
726f6388
JA
59/* Return a pointer to free()able block of memory large enough
60 to hold BYTES number of bytes. If the memory cannot be allocated,
61 print an error message and abort. */
f73dda09 62PTR_T
726f6388 63xmalloc (bytes)
f73dda09 64 size_t bytes;
726f6388 65{
f73dda09 66 PTR_T temp;
726f6388 67
f73dda09 68 temp = malloc (bytes);
ccc6cda3 69 if (temp == 0)
726f6388
JA
70 memory_error_and_abort ("xmalloc");
71 return (temp);
72}
73
f73dda09 74PTR_T
726f6388 75xrealloc (pointer, bytes)
f73dda09
JA
76 PTR_T pointer;
77 size_t bytes;
726f6388 78{
f73dda09 79 PTR_T temp;
726f6388 80
f73dda09 81 temp = pointer ? realloc (pointer, bytes) : malloc (bytes);
726f6388 82
ccc6cda3 83 if (temp == 0)
726f6388
JA
84 memory_error_and_abort ("xrealloc");
85 return (temp);
86}
87
ccc6cda3
JA
88void
89xfree (string)
f73dda09 90 PTR_T string;
ccc6cda3
JA
91{
92 if (string)
93 free (string);
726f6388 94}