diff options
Diffstat (limited to 'boehm-gc/win32_threads.c')
-rw-r--r-- | boehm-gc/win32_threads.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/boehm-gc/win32_threads.c b/boehm-gc/win32_threads.c index 980faf34d94..38de099fa87 100644 --- a/boehm-gc/win32_threads.c +++ b/boehm-gc/win32_threads.c @@ -447,16 +447,22 @@ static DWORD WINAPI thread_start(LPVOID arg) /* Clear the thread entry even if we exit with an exception. */ /* This is probably pointless, since an uncaught exception is */ /* supposed to result in the process being killed. */ +#ifndef __GNUC__ __try { +#endif /* __GNUC__ */ ret = args.start (args.param); +#ifndef __GNUC__ } __finally { +#endif /* __GNUC__ */ LOCK(); args.entry->stack = 0; args.entry->in_use = FALSE; /* cast away volatile qualifier */ BZERO((void *) &args.entry->context, sizeof(CONTEXT)); UNLOCK(); +#ifndef __GNUC__ } +#endif /* __GNUC__ */ return ret; } |