From ff6172c44bd8dad229a9010dacb81e3929ee4060 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sun, 5 Dec 2010 13:13:16 -0700 Subject: [PATCH] fix futures for CGC, where lightweight continuations are disabled --- src/racket/src/future.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/racket/src/future.c b/src/racket/src/future.c index e4f78bdfee..12673a20bf 100644 --- a/src/racket/src/future.c +++ b/src/racket/src/future.c @@ -1214,16 +1214,16 @@ void scheme_check_future_work() if (ft && ft->want_lw) { void *storage[3]; - (void)capture_future_continuation(ft, storage); - - /* Signal the waiting worker thread that it - can continue doing other things: */ - mzrt_mutex_lock(fs->future_mutex); - if (ft->can_continue_sema) { - mzrt_sema_post(ft->can_continue_sema); - ft->can_continue_sema = NULL; + if (capture_future_continuation(ft, storage)) { + /* Signal the waiting worker thread that it + can continue doing other things: */ + mzrt_mutex_lock(fs->future_mutex); + if (ft->can_continue_sema) { + mzrt_sema_post(ft->can_continue_sema); + ft->can_continue_sema = NULL; + } + mzrt_mutex_unlock(fs->future_mutex); } - mzrt_mutex_unlock(fs->future_mutex); } else break; }