ffi: fix race condition in in-original-place support

This commit is contained in:
Matthew Flatt 2011-05-13 08:07:27 -06:00
parent 3c1cd700a1
commit a96fe882f8
2 changed files with 6 additions and 4 deletions

View File

@ -2872,7 +2872,7 @@ void scheme_check_foreign_work(void)
#ifdef MZ_USE_PLACES
if ((scheme_current_place_id == 0) && orig_place_mutex) {
FFI_Orig_Place_Call *todo;
FFI_Orig_Place_Call *todo, *next;
mzrt_mutex_lock(orig_place_mutex);
todo = orig_place_calls;
@ -2881,8 +2881,9 @@ void scheme_check_foreign_work(void)
while (todo) {
ffi_call(todo->cif, todo->proc, todo->p, todo->avalues);
next = todo->next;
mzrt_sema_post(todo->sema);
todo = todo->next;
todo = next;
}
}
#endif

View File

@ -2234,7 +2234,7 @@ void scheme_check_foreign_work(void)
#ifdef MZ_USE_PLACES
if ((scheme_current_place_id == 0) && orig_place_mutex) {
FFI_Orig_Place_Call *todo;
FFI_Orig_Place_Call *todo, *next;
mzrt_mutex_lock(orig_place_mutex);
todo = orig_place_calls;
@ -2243,8 +2243,9 @@ void scheme_check_foreign_work(void)
while (todo) {
ffi_call(todo->cif, todo->proc, todo->p, todo->avalues);
next = todo->next;
mzrt_sema_post(todo->sema);
todo = todo->next;
todo = next;
}
}
#endif