From: Richard Kenner Date: Wed, 9 Feb 1994 00:19:53 +0000 (-0500) Subject: (__builtin_new): If __new_handler returns, keep trying to allocate the memory. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=442e881d89e931d7aa1f6794e6814d6eab08a26f;p=gcc.git (__builtin_new): If __new_handler returns, keep trying to allocate the memory. (__default_new_handler): Add __ to beginning of name to avoid namespace clashing. From-SVN: r6506 --- diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c index 6b58e0fe1fb..f3c6b0e8d15 100644 --- a/gcc/libgcc2.c +++ b/gcc/libgcc2.c @@ -1,6 +1,6 @@ /* More subroutines needed by GCC output code on some machines. */ /* Compile this one with gcc. */ -/* Copyright (C) 1989, 1992, 1993 Free Software Foundation, Inc. +/* Copyright (C) 1989, 1992, 1993, 1994 Free Software Foundation, Inc. This file is part of GNU CC. @@ -1574,8 +1574,12 @@ __builtin_new (size_t sz) if (sz == 0) sz = 1; p = (void *) malloc (sz); - if (p == 0) - (*__new_handler) (); + while (p == 0) + { + (*__new_handler) (); + p = (void *) malloc (sz); + } + return p; } #endif /* L_op_new */ @@ -1597,9 +1601,9 @@ __builtin_new (size_t sz) typedef void (*vfp)(void); extern void *__builtin_new (size_t); -static void default_new_handler (void); +static void __default_new_handler (void); -vfp __new_handler = default_new_handler; +vfp __new_handler = __default_new_handler; vfp __set_new_handler (handler) @@ -1608,7 +1612,7 @@ __set_new_handler (handler) vfp prev_handler; prev_handler = __new_handler; - if (handler == 0) handler = default_new_handler; + if (handler == 0) handler = __default_new_handler; __new_handler = handler; return prev_handler; } @@ -1623,7 +1627,7 @@ set_new_handler (handler) #define MESSAGE "Virtual memory exceeded in `new'\n" static void -default_new_handler () +__default_new_handler () { /* don't use fprintf (stderr, ...) because it may need to call malloc. */ /* This should really print the name of the program, but that is hard to