home *** CD-ROM | disk | FTP | other *** search
/ Dream 52 / Amiga_Dream_52.iso / Atari / Gnu / gdb36p4s.zoo / readline / xmalloc.c < prev   
C/C++ Source or Header  |  1991-09-02  |  2KB  |  70 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. #include <stdio.h>
  23.  
  24. static void memory_error_and_abort ();
  25.  
  26. /* **************************************************************** */
  27. /*                                    */
  28. /*           Memory Allocation and Deallocation.            */
  29. /*                                    */
  30. /* **************************************************************** */
  31.  
  32. /* Return a pointer to free()able block of memory large enough
  33.    to hold BYTES number of bytes.  If the memory cannot be allocated,
  34.    print an error message and abort. */
  35. char *
  36. xmalloc (bytes)
  37.      int bytes;
  38. {
  39.   char *temp = (char *)malloc (bytes);
  40.  
  41.   if (!temp)
  42.     memory_error_and_abort ("xmalloc");
  43.   return (temp);
  44. }
  45.  
  46. char *
  47. xrealloc (pointer, bytes)
  48.      char *pointer;
  49.      int bytes;
  50. {
  51.   char *temp;
  52.  
  53.   if (!pointer)
  54.     temp = (char *)malloc (bytes);
  55.   else
  56.     temp = (char *)realloc (pointer, bytes);
  57.  
  58.   if (!temp)
  59.     memory_error_and_abort ("xrealloc");
  60.   return (temp);
  61. }
  62.  
  63. static void
  64. memory_error_and_abort (fname)
  65.      char *fname;
  66. {
  67.   fprintf (stderr, "%s: Out of virtual memory!\n", fname);
  68.   abort ();
  69. }
  70.