home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 9 / FreshFishVol9-CD2.bin / bbs / gnu / gdb-4.14-src.lha / gdb-4.14 / readline / xmalloc.c < prev   
Encoding:
C/C++ Source or Header  |  1994-02-24  |  2.0 KB  |  76 lines

  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. extern char *malloc();
  27. extern char *realloc();
  28.  
  29. static void memory_error_and_abort ();
  30.  
  31. /* **************************************************************** */
  32. /*                                    */
  33. /*           Memory Allocation and Deallocation.            */
  34. /*                                    */
  35. /* **************************************************************** */
  36.  
  37. /* Return a pointer to free()able block of memory large enough
  38.    to hold BYTES number of bytes.  If the memory cannot be allocated,
  39.    print an error message and abort. */
  40. char *
  41. xmalloc (bytes)
  42.      int bytes;
  43. {
  44.   char *temp = (char *)malloc (bytes);
  45.  
  46.   if (!temp)
  47.     memory_error_and_abort ("xmalloc");
  48.   return (temp);
  49. }
  50.  
  51. char *
  52. xrealloc (pointer, bytes)
  53.      char *pointer;
  54.      int bytes;
  55. {
  56.   char *temp;
  57.  
  58.   if (!pointer)
  59.     temp = (char *)malloc (bytes);
  60.   else
  61.     temp = (char *)realloc (pointer, bytes);
  62.  
  63.   if (!temp)
  64.     memory_error_and_abort ("xrealloc");
  65.   return (temp);
  66. }
  67.  
  68. static void
  69. memory_error_and_abort (fname)
  70.      char *fname;
  71. {
  72.   fprintf (stderr, "%s: Out of virtual memory!\n", fname);
  73.   abort ();
  74. }
  75. #endif /* !ALREADY_HAVE_XMALLOC */
  76.