Compare commits

...

2 commits

Author SHA1 Message Date
8f3e0a9a1d Fix exception handling in fibers-map-with-progress
All checks were successful
/ test (push) Successful in 9s
2025-06-26 22:53:15 +02:00
09ca6cfb6b Fix resource-pool-destroy-resource-exception
Raising the exception is more consistent, and avoids returning the
resource.
2025-06-26 21:27:32 +02:00
3 changed files with 23 additions and 6 deletions

View file

@ -217,9 +217,9 @@
(if (null? active-channels) (if (null? active-channels)
(map (map
(match-lambda (match-lambda
((#f . ('exception . exn)) ((#f . ('exception exn))
(raise-exception exn)) (raise-exception exn))
((#f . ('result . val)) ((#f . ('result val))
val)) val))
channels-to-results) channels-to-results)
(loop (loop
@ -239,10 +239,10 @@
(if (eq? channel c) (if (eq? channel c)
(cons #f (cons #f
(match result (match result
(('exception . exn) (('exception exn)
result) result)
(_ (_
(cons 'result result)))) (list 'result result))))
(cons c r)))) (cons c r))))
channels-to-results))) channels-to-results)))
#f)))) #f))))

View file

@ -1351,8 +1351,7 @@ available. Return the resource once PROC has returned."
'destroy 'destroy
'return) 'return)
resource)) resource))
(unless (resource-pool-destroy-resource-exception? exn) (raise-exception exn))
(raise-exception exn)))
(lambda () (lambda ()
(with-exception-handler (with-exception-handler
(lambda (exn) (lambda (exn)

View file

@ -61,6 +61,24 @@
identity identity
'(())))) '(()))))
(run-fibers-for-tests
(lambda ()
(with-exception-handler
(lambda (exn)
(unless (and (exception-with-message? exn)
(string=? (exception-message exn)
"foo"))
(raise-exception exn)))
(lambda ()
(fibers-map-with-progress
(lambda _
(raise-exception
(make-exception-with-message "foo")))
'((1)))
(error 'should-not-reach-here))
#:unwind? #t)))
(run-fibers-for-tests (run-fibers-for-tests
(lambda () (lambda ()
(with-exception-handler (with-exception-handler