diff options
author | Michael Meissner <meissner@cygnus.com> | 1998-07-02 11:42:39 +0000 |
---|---|---|
committer | Michael Meissner <meissner@gcc.gnu.org> | 1998-07-02 11:42:39 +0000 |
commit | 848205e6edc05cb41e877c5835244ce3bd133fda (patch) | |
tree | 3c0b7c2e8e7833bd540531f442c4612435c1c382 /gcc/toplev.c | |
parent | 44bb0e9324d7bdd892a20e816314be646a920f06 (diff) | |
download | gcc-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.c | 40 |
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; } |