]> git.ipfire.org Git - thirdparty/bash.git/blame - lib/malloc/xmalloc.c
Bash-5.3 distribution sources and documentation
[thirdparty/bash.git] / lib / malloc / xmalloc.c
CommitLineData
726f6388
JA
1/* xmalloc.c -- safe versions of malloc and realloc */
2
b8c60bc9 3/* Copyright (C) 1991-2003, 2022 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
f73dda09 36# define PTR_T void *
f73dda09 37#endif /* PTR_T */
726f6388
JA
38
39/* **************************************************************** */
40/* */
41/* Memory Allocation and Deallocation. */
42/* */
43/* **************************************************************** */
44
f73dda09 45static void
b8c60bc9 46memory_error_and_abort (char *fname)
f73dda09
JA
47{
48 fprintf (stderr, "%s: out of virtual memory\n", fname);
49 exit (2);
50}
51
726f6388
JA
52/* Return a pointer to free()able block of memory large enough
53 to hold BYTES number of bytes. If the memory cannot be allocated,
54 print an error message and abort. */
f73dda09 55PTR_T
b8c60bc9 56xmalloc (size_t bytes)
726f6388 57{
f73dda09 58 PTR_T temp;
726f6388 59
f73dda09 60 temp = malloc (bytes);
ccc6cda3 61 if (temp == 0)
726f6388
JA
62 memory_error_and_abort ("xmalloc");
63 return (temp);
64}
65
f73dda09 66PTR_T
b8c60bc9 67xrealloc (PTR_T pointer, size_t bytes)
726f6388 68{
f73dda09 69 PTR_T temp;
726f6388 70
f73dda09 71 temp = pointer ? realloc (pointer, bytes) : malloc (bytes);
726f6388 72
ccc6cda3 73 if (temp == 0)
726f6388
JA
74 memory_error_and_abort ("xrealloc");
75 return (temp);
76}
77
ccc6cda3 78void
b8c60bc9 79xfree (PTR_T string)
ccc6cda3
JA
80{
81 if (string)
82 free (string);
726f6388 83}