diff --git a/src/mzscheme/src/fun.c b/src/mzscheme/src/fun.c index 5823abd856..8ea4816b1a 100644 --- a/src/mzscheme/src/fun.c +++ b/src/mzscheme/src/fun.c @@ -3294,6 +3294,7 @@ Scheme_Object *scheme_dynamic_wind(void (*pre)(void *), scheme_restore_env_stack_w_thread(dw->envss, p); err = 1; } else { + p = scheme_current_thread; p->suspend_break++; post(data); p = scheme_current_thread; diff --git a/src/mzscheme/src/port.c b/src/mzscheme/src/port.c index a21db8c4e0..967066bf41 100644 --- a/src/mzscheme/src/port.c +++ b/src/mzscheme/src/port.c @@ -1861,12 +1861,13 @@ static Scheme_Object *return_data(void *data, int argc, Scheme_Object **argv) int scheme_peeked_read_via_get(Scheme_Input_Port *ip, long _size, Scheme_Object *unless_evt, - Scheme_Object *target_evt) + Scheme_Object *_target_evt) { - Scheme_Object *v, *sema, *a[3], **aa, *l; + Scheme_Object * volatile v, *sema, *a[3], ** volatile aa, * volatile l; volatile long size = _size; - int n, current_leader = 0; + volatile int n, current_leader = 0; Scheme_Type t; + Scheme_Object * volatile target_evt = _target_evt; /* Check whether t's even t value is known to be always itself: */ t = SCHEME_TYPE(target_evt);