aboutsummaryrefslogtreecommitdiff
path: root/tools/bison++/allocate.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tools/bison++/allocate.cc')
-rw-r--r--tools/bison++/allocate.cc61
1 files changed, 61 insertions, 0 deletions
diff --git a/tools/bison++/allocate.cc b/tools/bison++/allocate.cc
new file mode 100644
index 000000000..773366eb6
--- /dev/null
+++ b/tools/bison++/allocate.cc
@@ -0,0 +1,61 @@
+/* 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 <stdio.h>
+
+extern "C" char *calloc (unsigned,unsigned);
+extern "C" char *realloc (char*,unsigned);
+extern void done (int);
+
+extern char *program_name;
+
+char *
+xmalloc (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 (char* block, 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);
+}