* Off by one error in conservative stack scavenging, the top of the
stack wasn't pinned.
* In the new calling convention there is a small window during which
the return address only exists on the top of the stack. If a gc
was triggered during that window, the code object could move, and
the return address would point to freed memory.
#else
esp = (void **)((void *)&raise);
#endif
- for (ptr = ((void **)th->control_stack_end)-1; ptr > esp; ptr--) {
+ for (ptr = ((void **)th->control_stack_end)-1; ptr >= esp; ptr--) {
preserve_pointer(*ptr);
}
}
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.8.17"
+"1.0.8.18"