Imported from ../bash-1.14.7.tar.gz.
[platform/upstream/bash.git] / lib / malloc / xmalloc.c
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
10    Free Software Foundation; either version 1, or (at your option) any
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
20    Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
21
22 #if defined (ALREADY_HAVE_XMALLOC)
23 #else
24 #include <stdio.h>
25
26 #if defined (HAVE_STDLIB_H)
27 #  include <stdlib.h>
28 #else
29 #  include "ansi_stdlib.h"
30 #endif /* HAVE_STDLIB_H */
31
32 static void memory_error_and_abort ();
33
34 /* **************************************************************** */
35 /*                                                                  */
36 /*                 Memory Allocation and Deallocation.              */
37 /*                                                                  */
38 /* **************************************************************** */
39
40 /* Return a pointer to free()able block of memory large enough
41    to hold BYTES number of bytes.  If the memory cannot be allocated,
42    print an error message and abort. */
43 char *
44 xmalloc (bytes)
45      int bytes;
46 {
47   char *temp = (char *)malloc (bytes);
48
49   if (!temp)
50     memory_error_and_abort ("xmalloc");
51   return (temp);
52 }
53
54 char *
55 xrealloc (pointer, bytes)
56      char *pointer;
57      int bytes;
58 {
59   char *temp;
60
61   if (!pointer)
62     temp = (char *)malloc (bytes);
63   else
64     temp = (char *)realloc (pointer, bytes);
65
66   if (!temp)
67     memory_error_and_abort ("xrealloc");
68   return (temp);
69 }
70
71 static void
72 memory_error_and_abort (fname)
73      char *fname;
74 {
75   fprintf (stderr, "%s: Out of virtual memory!\n", fname);
76   abort ();
77 }
78 #endif /* !ALREADY_HAVE_XMALLOC */