aboutsummaryrefslogtreecommitdiff
path: root/gcc/toplev.c
diff options
context:
space:
mode:
authorMichael Meissner <meissner@cygnus.com>1998-07-02 11:42:39 +0000
committerMichael Meissner <meissner@gcc.gnu.org>1998-07-02 11:42:39 +0000
commit848205e6edc05cb41e877c5835244ce3bd133fda (patch)
tree3c0b7c2e8e7833bd540531f442c4612435c1c382 /gcc/toplev.c
parent44bb0e9324d7bdd892a20e816314be646a920f06 (diff)
downloadgcc-848205e6edc05cb41e877c5835244ce3bd133fda.zip
gcc-848205e6edc05cb41e877c5835244ce3bd133fda.tar.gz
gcc-848205e6edc05cb41e877c5835244ce3bd133fda.tar.bz2
Add initial varray support infrastructure
From-SVN: r20892
Diffstat (limited to 'gcc/toplev.c')
-rw-r--r--gcc/toplev.c40
1 files changed, 35 insertions, 5 deletions
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 353d418..6bc7663 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -1968,12 +1968,35 @@ char *
xmalloc (size)
unsigned size;
{
- register char *value = (char *) malloc (size);
- if (value == 0 && size != 0)
+ register char *value;
+
+ if (size == 0)
+ size = 1;
+
+ value = (char *) malloc (size);
+ if (value == 0)
+ fatal ("virtual memory exhausted");
+ return value;
+}
+
+/* Same as `calloc' but report error if no memory available. */
+
+char *
+xcalloc (size1, size2)
+ unsigned size1, size2;
+{
+ register char *value;
+
+ if (size1 == 0 || size2 == 0)
+ size1 = size2 = 1;
+
+ value = (char *) calloc (size1, size2);
+ if (value == 0)
fatal ("virtual memory exhausted");
return value;
}
+
/* Same as `realloc' but report error if no memory available.
Also handle null PTR even if the vendor realloc gets it wrong. */
@@ -1982,11 +2005,18 @@ xrealloc (ptr, size)
char *ptr;
int size;
{
- char *result = (ptr
- ? (char *) realloc (ptr, size)
- : (char *) malloc (size));
+ char *result;
+
+ if (size == 0)
+ size = 1;
+
+ result = (ptr
+ ? (char *) realloc (ptr, size)
+ : (char *) malloc (size));
+
if (!result)
fatal ("virtual memory exhausted");
+
return result;
}