Win64: fix stack-trace imprecision
Propagates repairs of 71e0bdfcff
to Win64 stack handling.
This commit is contained in:
parent
4b8b6fc360
commit
e21f75fa1b
|
@ -288,11 +288,17 @@ Scheme_Object *scheme_native_stack_trace(void)
|
||||||
else
|
else
|
||||||
first = name;
|
first = name;
|
||||||
last = name;
|
last = name;
|
||||||
|
if (shift_cache_to_next) {
|
||||||
|
stack_cache_stack[stack_cache_stack_pos].cache = last;
|
||||||
|
shift_cache_to_next = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cache_sp) {
|
if (cache_sp) {
|
||||||
if (STK_COMP((uintptr_t)halfway, (uintptr_t)cache_sp)) {
|
if (STK_COMP((uintptr_t)halfway, (uintptr_t)cache_sp)) {
|
||||||
set_cache(cache_sp, last);
|
set_cache(cache_sp, last);
|
||||||
|
if (!name)
|
||||||
|
shift_cache_to_next = 1;
|
||||||
halfway = stack_end;
|
halfway = stack_end;
|
||||||
unsuccess = -100000; /* if we got halfway, no need to bail out later */
|
unsuccess = -100000; /* if we got halfway, no need to bail out later */
|
||||||
}
|
}
|
||||||
|
@ -306,6 +312,9 @@ Scheme_Object *scheme_native_stack_trace(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (shift_cache_to_next)
|
||||||
|
stack_cache_stack[stack_cache_stack_pos].cache = tail;
|
||||||
|
|
||||||
if (last)
|
if (last)
|
||||||
SCHEME_CDR(last) = tail;
|
SCHEME_CDR(last) = tail;
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue
Block a user