1 /* xmalloc.c -- safe versions of malloc and realloc */ 2 3 /* Copyright (C) 1991-2009 Free Software Foundation, Inc. 4 5 This file is part of the GNU Readline Library (Readline), a library 6 for reading lines of text with interactive input and history editing. 7 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. 12 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. 17 18 You should have received a copy of the GNU General Public License 19 along with Readline. If not, see <http://www.gnu.org/licenses/>. 20 */ 21 22 #define READLINE_LIBRARY 23 24 #if defined (HAVE_CONFIG_H) 25 #include <config.h> 26 #endif 27 28 #include <stdio.h> 29 30 #if defined (HAVE_STDLIB_H) 31 # include <stdlib.h> 32 #else 33 # include "ansi_stdlib.h" 34 #endif /* HAVE_STDLIB_H */ 35 36 #include "xmalloc.h" 37 38 /* **************************************************************** */ 39 /* */ 40 /* Memory Allocation and Deallocation. */ 41 /* */ 42 /* **************************************************************** */ 43 44 static void 45 memory_error_and_abort (fname) 46 char *fname; 47 { 48 fprintf (stderr, "%s: out of virtual memory\n", fname); 49 exit (2); 50 } 51 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. */ 55 PTR_T 56 xmalloc (bytes) 57 size_t bytes; 58 { 59 PTR_T temp; 60 61 temp = malloc (bytes); 62 if (temp == 0) 63 memory_error_and_abort ("xmalloc"); 64 return (temp); 65 } 66 67 PTR_T 68 xrealloc (pointer, bytes) 69 PTR_T pointer; 70 size_t bytes; 71 { 72 PTR_T temp; 73 74 temp = pointer ? realloc (pointer, bytes) : malloc (bytes); 75 76 if (temp == 0) 77 memory_error_and_abort ("xrealloc"); 78 return (temp); 79 } 80