diff options
author | pixel <pixel> | 2004-04-28 14:23:36 +0000 |
---|---|---|
committer | pixel <pixel> | 2004-04-28 14:23:36 +0000 |
commit | 3ae5cc3f93a80232a7d173105ff95a212f03d978 (patch) | |
tree | 25434bcccf43321b53c1262d5a614e1a4ddf057e /MSVC/readline/xmalloc.c | |
parent | c6c5c24b5939c4411d597300ef20b2517f3eb841 (diff) |
Adding libreadline's source to the MSVC project
Diffstat (limited to 'MSVC/readline/xmalloc.c')
-rw-r--r-- | MSVC/readline/xmalloc.c | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/MSVC/readline/xmalloc.c b/MSVC/readline/xmalloc.c new file mode 100644 index 0000000..a5b526e --- /dev/null +++ b/MSVC/readline/xmalloc.c @@ -0,0 +1,86 @@ +/* xmalloc.c -- safe versions of malloc and realloc */ + +/* Copyright (C) 1991 Free Software Foundation, Inc. + + This file is part of GNU Readline, a library for reading lines + of text with interactive input and history editing. + + Readline is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 2, or (at your option) any + later version. + + Readline is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Readline; see the file COPYING. If not, write to the Free + Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. */ +#define READLINE_LIBRARY 1 + +#include "config.h" + +#include <stdio.h> + +#if defined (HAVE_STDLIB_H) +# include <stdlib.h> +#else +# include "ansi_stdlib.h" +#endif /* HAVE_STDLIB_H */ + +#include "xmalloc.h" + +/* **************************************************************** */ +/* */ +/* Memory Allocation and Deallocation. */ +/* */ +/* **************************************************************** */ + +static void +memory_error_and_abort (fname) + char *fname; +{ + fprintf (stderr, "%s: out of virtual memory\n", fname); + exit (2); +} + +/* Return a pointer to free()able block of memory large enough + to hold BYTES number of bytes. If the memory cannot be allocated, + print an error message and abort. */ +PTR_T +xmalloc (bytes) + size_t bytes; +{ + PTR_T temp; + + temp = malloc (bytes); + if (temp == 0) + memory_error_and_abort ("xmalloc"); + return (temp); +} + +PTR_T +xrealloc (pointer, bytes) + PTR_T pointer; + size_t bytes; +{ + PTR_T temp; + + temp = pointer ? realloc (pointer, bytes) : malloc (bytes); + + if (temp == 0) + memory_error_and_abort ("xrealloc"); + return (temp); +} + +/* Use this as the function to call when adding unwind protects so we + don't need to know what free() returns. */ +void +xfree (string) + PTR_T string; +{ + if (string) + free (string); +} |