Blame readline/xmalloc.c

Packit Service 706eca
/* xmalloc.c -- safe versions of malloc and realloc */
Packit Service 706eca
Packit Service 706eca
/* Copyright (C) 1991-2009 Free Software Foundation, Inc.
Packit Service 706eca
Packit Service 706eca
   This file is part of the GNU Readline Library (Readline), a library
Packit Service 706eca
   for reading lines of text with interactive input and history editing.      
Packit Service 706eca
Packit Service 706eca
   Readline is free software: you can redistribute it and/or modify
Packit Service 706eca
   it under the terms of the GNU General Public License as published by
Packit Service 706eca
   the Free Software Foundation, either version 3 of the License, or
Packit Service 706eca
   (at your option) any later version.
Packit Service 706eca
Packit Service 706eca
   Readline is distributed in the hope that it will be useful,
Packit Service 706eca
   but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service 706eca
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit Service 706eca
   GNU General Public License for more details.
Packit Service 706eca
Packit Service 706eca
   You should have received a copy of the GNU General Public License
Packit Service 706eca
   along with Readline.  If not, see <http://www.gnu.org/licenses/>.
Packit Service 706eca
*/
Packit Service 706eca
Packit Service 706eca
#define READLINE_LIBRARY
Packit Service 706eca
Packit Service 706eca
#if defined (HAVE_CONFIG_H)
Packit Service 706eca
#include <config.h>
Packit Service 706eca
#endif
Packit Service 706eca
Packit Service 706eca
#include <stdio.h>
Packit Service 706eca
Packit Service 706eca
#if defined (HAVE_STDLIB_H)
Packit Service 706eca
#  include <stdlib.h>
Packit Service 706eca
#else
Packit Service 706eca
#  include "ansi_stdlib.h"
Packit Service 706eca
#endif /* HAVE_STDLIB_H */
Packit Service 706eca
Packit Service 706eca
#include "xmalloc.h"
Packit Service 706eca
Packit Service 706eca
/* **************************************************************** */
Packit Service 706eca
/*								    */
Packit Service 706eca
/*		   Memory Allocation and Deallocation.		    */
Packit Service 706eca
/*								    */
Packit Service 706eca
/* **************************************************************** */
Packit Service 706eca
Packit Service 706eca
static void
Packit Service 706eca
memory_error_and_abort (fname)
Packit Service 706eca
     char *fname;
Packit Service 706eca
{
Packit Service 706eca
  fprintf (stderr, "%s: out of virtual memory\n", fname);
Packit Service 706eca
  exit (2);
Packit Service 706eca
}
Packit Service 706eca
Packit Service 706eca
/* Return a pointer to free()able block of memory large enough
Packit Service 706eca
   to hold BYTES number of bytes.  If the memory cannot be allocated,
Packit Service 706eca
   print an error message and abort. */
Packit Service 706eca
PTR_T
Packit Service 706eca
xmalloc (bytes)
Packit Service 706eca
     size_t bytes;
Packit Service 706eca
{
Packit Service 706eca
  PTR_T temp;
Packit Service 706eca
Packit Service 706eca
  temp = malloc (bytes);
Packit Service 706eca
  if (temp == 0)
Packit Service 706eca
    memory_error_and_abort ("xmalloc");
Packit Service 706eca
  return (temp);
Packit Service 706eca
}
Packit Service 706eca
Packit Service 706eca
PTR_T
Packit Service 706eca
xrealloc (pointer, bytes)
Packit Service 706eca
     PTR_T pointer;
Packit Service 706eca
     size_t bytes;
Packit Service 706eca
{
Packit Service 706eca
  PTR_T temp;
Packit Service 706eca
Packit Service 706eca
  temp = pointer ? realloc (pointer, bytes) : malloc (bytes);
Packit Service 706eca
Packit Service 706eca
  if (temp == 0)
Packit Service 706eca
    memory_error_and_abort ("xrealloc");
Packit Service 706eca
  return (temp);
Packit Service 706eca
}