diff options
-rw-r--r-- | win32_threads.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/win32_threads.c b/win32_threads.c index c5eb9a24..9ff9dfdb 100644 --- a/win32_threads.c +++ b/win32_threads.c @@ -575,7 +575,8 @@ GC_INNER void GC_start_world(void) # ifdef DEBUG_THREADS GC_log_printf("Resuming 0x%x\n", (int)p->id); # endif - GC_ASSERT(p -> crtn -> stack_end != NULL && p -> id != self_id); + GC_ASSERT(p -> id != self_id + && *(/* no volatile */ ptr_t *)&(p -> crtn -> stack_end) != NULL); if (ResumeThread(THREAD_HANDLE(p)) == (DWORD)-1) ABORT("ResumeThread failed"); p -> flags &= ~IS_SUSPENDED; @@ -594,7 +595,8 @@ GC_INNER void GC_start_world(void) # ifdef DEBUG_THREADS GC_log_printf("Resuming 0x%x\n", (int)p->id); # endif - GC_ASSERT(p -> crtn -> stack_end != NULL && p -> id != self_id); + GC_ASSERT(p -> id != self_id + && *(ptr_t *)&(p -> crtn -> stack_end) != NULL); if (ResumeThread(THREAD_HANDLE(p)) == (DWORD)-1) ABORT("ResumeThread failed"); GC_win32_unprotect_thread(p); |