* win32_threads.c (GC_push_all_stacks): Tolerate bad sp.

From-SVN: r55103
This commit is contained in:
Hans Boehm 2002-06-29 17:29:51 +00:00 committed by Hans Boehm
parent 49e9776d06
commit 32d7e5881b
2 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2002-06-28 Hans Boehm <Hans_Boehm@hp.com>
Jonathan Clark
* win32_threads.c (GC_push_all_stacks): Tolerate bad sp.
2002-05-14 Release Manager
* GCC 3.1 Released.

View File

@ -144,8 +144,15 @@ void GC_push_all_stacks()
GC_push_one ((word) thread_table[i].context.Edx);
GC_push_one ((word) thread_table[i].context.Ecx);
GC_push_one ((word) thread_table[i].context.Eax);
GC_push_all_stack((char *) thread_table[i].context.Esp,
thread_table[i].stack);
if (thread_table[i].context.Esp >= (DWORD)thread_table[i].stack
|| thread_table[i].context.Esp < (DWORD)bottom) {
WARN("Thread stack pointer 0x%lx out of range, pushing everything",
thread_table[i].context.Esp);
GC_push_all_stack((char *) bottom, thread_table[i].stack);
} else {
GC_push_all_stack((char *) thread_table[i].context.Esp,
thread_table[i].stack);
}
# else
# ifdef ARM32
if (thread_table[i].context.Sp >= (DWORD)thread_table[i].stack