X-Git-Url: https://git.saurik.com/bison.git/blobdiff_plain/08089d5d35ece0c7d41659cc1bc09638e2abb151..40675e7cc90b44d3c82c424946ea55083eb78121:/src/allocate.c diff --git a/src/allocate.c b/src/allocate.c new file mode 100644 index 00000000..a74dc182 --- /dev/null +++ b/src/allocate.c @@ -0,0 +1,64 @@ +/* Allocate and clear storage for bison, + Copyright (C) 1984, 1989 Free Software Foundation, Inc. + +This file is part of Bison, the GNU Compiler Compiler. + +Bison 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. + +Bison 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 Bison; see the file COPYING. If not, write to +the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ + + +#include + +extern char *calloc (); +extern char *realloc (); +extern void done (); + +extern char *program_name; + +char * +xmalloc (n) + register unsigned n; +{ + register char *block; + + /* Avoid uncertainty about what an arg of 0 will do. */ + if (n == 0) + n = 1; + block = calloc (n, 1); + if (block == NULL) + { + fprintf (stderr, "%s: memory exhausted\n", program_name); + done (1); + } + + return (block); +} + +char * +xrealloc (block, n) + register char *block; + register unsigned n; +{ + /* Avoid uncertainty about what an arg of 0 will do. */ + if (n == 0) + n = 1; + block = realloc (block, n); + if (block == NULL) + { + fprintf (stderr, "%s: memory exhausted\n", program_name); + done (1); + } + + return (block); +}