1/* xmalloc.c -- safe versions of malloc and realloc */ 2 3/* Copyright (C) 1991-2017 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 44static void 45memory_error_and_abort (char *fname) 46{ 47 fprintf (stderr, "%s: out of virtual memory\n", fname); 48 exit (2); 49} 50 51/* Return a pointer to free()able block of memory large enough 52 to hold BYTES number of bytes. If the memory cannot be allocated, 53 print an error message and abort. */ 54PTR_T 55xmalloc (size_t bytes) 56{ 57 PTR_T temp; 58 59 temp = malloc (bytes); 60 if (temp == 0) 61 memory_error_and_abort ("xmalloc"); 62 return (temp); 63} 64 65PTR_T 66xrealloc (PTR_T pointer, size_t bytes) 67{ 68 PTR_T temp; 69 70 temp = pointer ? realloc (pointer, bytes) : malloc (bytes); 71 72 if (temp == 0) 73 memory_error_and_abort ("xrealloc"); 74 return (temp); 75} 76