source: trunk/third/readline/xmalloc.c @ 12992

Revision 12992, 2.2 KB checked in by kcr, 25 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r12991, which included commits to RCS files with non-trunk default branches.
Line 
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 (HAVE_CONFIG_H)
23#include <config.h>
24#endif
25
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
34static void memory_error_and_abort ();
35
36/* **************************************************************** */
37/*                                                                  */
38/*                 Memory Allocation and Deallocation.              */
39/*                                                                  */
40/* **************************************************************** */
41
42/* Return a pointer to free()able block of memory large enough
43   to hold BYTES number of bytes.  If the memory cannot be allocated,
44   print an error message and abort. */
45char *
46xmalloc (bytes)
47     int bytes;
48{
49  char *temp;
50
51  temp = (char *)malloc (bytes);
52  if (temp == 0)
53    memory_error_and_abort ("xmalloc");
54  return (temp);
55}
56
57char *
58xrealloc (pointer, bytes)
59     char *pointer;
60     int bytes;
61{
62  char *temp;
63
64  temp = pointer ? (char *)realloc (pointer, bytes) : (char *)malloc (bytes);
65
66  if (temp == 0)
67    memory_error_and_abort ("xrealloc");
68  return (temp);
69}
70
71static void
72memory_error_and_abort (fname)
73     char *fname;
74{
75  fprintf (stderr, "%s: out of virtual memory\n", fname);
76  exit (2);
77}
78
79/* Use this as the function to call when adding unwind protects so we
80   don't need to know what free() returns. */
81void
82xfree (string)
83     char *string;
84{
85  if (string)
86    free (string);
87}
Note: See TracBrowser for help on using the repository browser.