* misc.c (GC_exit_check): Test GC_find_leak, if it is switched off
then do not invoke GC_gcollect.
* misc.c (GC_default_on_abort): Explicitly turn off GC_find_leak to
prevent redundant garbage collection on EXIT (caused by some GC
failure).
STATIC void GC_exit_check(void)
{
- GC_gcollect();
+ if (GC_find_leak) {
+ GC_gcollect();
+ }
}
#if defined(UNIX_LIKE) && !defined(NO_DEBUGGING)
/* and from EXIT() macro (msg is NULL in that case). */
STATIC void GC_CALLBACK GC_default_on_abort(const char *msg)
{
+ GC_find_leak = FALSE; /* disable at-exit GC_gcollect() */
+
if (msg != NULL) {
# if defined(MSWIN32)
# ifndef DONT_USE_USER32_DLL