handle #f for sleep

svn: r8619
This commit is contained in:
Eli Barzilay 2008-02-11 14:20:54 +00:00
parent dea954e28a
commit 82d0dd13f2

View File

@ -215,16 +215,17 @@
(lambda ()
(define this (current-thread))
(define timer
(thread (lambda ()
(sleep sec)
;; even in this case there are no parameters
;; to copy, since it is on a different thread
(set! r (cons #f 'time))
(kill-thread this))))
(and sec
(thread (lambda ()
(sleep sec)
;; even in this case there are no parameters
;; to copy, since it is on a different thread
(set! r (cons #f 'time))
(kill-thread this)))))
(set! r
(with-handlers ([void (lambda (e) (list (p) raise e))])
(call-with-values thunk (lambda vs (list* (p) values vs)))))
(kill-thread timer))))
(when timer (kill-thread timer)))))
(custodian-shutdown-all c)
(unless r (error 'call-with-limits "internal error"))
;; apply parameter changes first