(fix of commit
38d07c167)
* mark.c [WRAP_MARK_SOME && (MSWIN32 || MSWINCE) && GC_WIN32_THREADS
&& !GC_PTHREADS] (GC_mark_some): If GC_started_thread_while_stopped()
then goto handle_thr_start instead of handle_ex.
* mark.c [WRAP_MARK_SOME && GC_WIN32_THREADS && !GC_PTHREADS]
(GC_mark_some): Define handle_thr_start label right after WARN() call.
/* to the exception case; our results are invalid and we have */
/* to start over. This cannot be prevented since we can't */
/* block in DllMain. */
- if (GC_started_thread_while_stopped()) goto handle_ex;
+ if (GC_started_thread_while_stopped())
+ goto handle_thr_start;
# endif
rm_handler:
return ret_val;
goto handle_ex;
# if defined(GC_WIN32_THREADS) && !defined(GC_PTHREADS)
if (GC_started_thread_while_stopped())
- goto handle_ex;
+ goto handle_thr_start;
# endif
rm_handler:
/* Uninstall the exception handler. */
warned_gc_no = GC_gc_no;
}
}
+# if defined(GC_WIN32_THREADS) && !defined(GC_PTHREADS)
+ handle_thr_start:
+# endif
/* We have bad roots on the stack. Discard mark stack. */
/* Rescan from marked objects. Redetermine roots. */
# ifdef REGISTER_LIBRARIES_EARLY