summaryrefslogtreecommitdiff
path: root/fibers/internal.scm
diff options
context:
space:
mode:
Diffstat (limited to 'fibers/internal.scm')
-rw-r--r--fibers/internal.scm13
1 files changed, 8 insertions, 5 deletions
diff --git a/fibers/internal.scm b/fibers/internal.scm
index b69f3d0..813330b 100644
--- a/fibers/internal.scm
+++ b/fibers/internal.scm
@@ -371,11 +371,14 @@ even if @var{fiber} is running on a remote scheduler."
except that it avoids suspending if the current continuation isn't
suspendable. Returns @code{#t} if the yield succeeded, or @code{#f}
otherwise."
- (let ((tag (scheduler-prompt-tag (fiber-scheduler (current-fiber)))))
- (and (suspendable-continuation? tag)
- (begin
- (abort-to-prompt tag (lambda (fiber) (resume-fiber fiber #f)))
- #t))))
+ (match (current-fiber)
+ (#f #f)
+ (fiber
+ (let ((tag (scheduler-prompt-tag (fiber-scheduler fiber))))
+ (and (suspendable-continuation? tag)
+ (begin
+ (abort-to-prompt tag (lambda (fiber) (resume-fiber fiber #f)))
+ #t))))))
(define (finalize-fd sched fd)
"Remove data associated with @var{fd} from the scheduler @var{ctx}.