From 10455daf549edf7afd0a705c0ae130d38917f913 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 15 Sep 2010 18:00:03 -0600 Subject: [PATCH] allowed nested try-atomics --- collects/ffi/unsafe/try-atomic.rkt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/collects/ffi/unsafe/try-atomic.rkt b/collects/ffi/unsafe/try-atomic.rkt index b9e9a7dd88..1de4186456 100644 --- a/collects/ffi/unsafe/try-atomic.rkt +++ b/collects/ffi/unsafe/try-atomic.rkt @@ -70,6 +70,7 @@ (lambda () default))) freeze-tag) (void)))] + [prev #f] [done? #f]) (hash-set! saved-ptrs handler #t) (parameterize ([freezer-box #f]) @@ -81,8 +82,7 @@ (lambda () (call-with-continuation-prompt ; to catch aborts (lambda () - (when (scheme_set_on_atomic_timeout handler) - (error 'try-atomic "internal error: nested handlers?!")) + (set! prev (scheme_set_on_atomic_timeout handler)) (set! ready? #t) (begin0 (thunk) @@ -102,6 +102,6 @@ (thunk)))) (lambda () (hash-remove! saved-ptrs handler) - (scheme_restore_on_atomic_timeout #f) + (scheme_restore_on_atomic_timeout prev) (unless done? (esc (void))))))))])))