I think I'm seeing a gambit bug.
I have a situation where this returns #f:
(with-exception-handler (lambda (e) #t) (lambda () (trampoline-gp-set! (make-trampoline) 6 99) #f))
And this returns #t:
(with-exception-catcher (lambda (e) #t) (lambda () (trampoline-gp-set! (make-trampoline) 6 99) #f))
And running this from the repl raises:
(trampoline-gp-set! (make-trampoline) 6 99)
The definition of trampoline-gp-set! is currently:
(define trampoline-gp-set!/internal (c-lambda (trampoline int unsigned-int64) void "___arg1->gp[___arg2] = ___arg3;"))
(define (trampoline-gp-set! trampoline index value) (if (>= index 6) (raise "invalid index for trampoline-gp-set!")) (trampoline-gp-set!/internal trampoline index value))
But all this happens with this definition as well:
(define trampoline-gp-set! (c-lambda (trampoline int unsigned-int64) void #<<END_OF_C_LAMBDA if (___arg2 >= 6) ___err = ___FIX(___UNKNOWN_ERR); else ___arg1->gp[___arg2] = ___arg3; END_OF_C_LAMBDA ))
Am I missing something?
I'm using WITH-EXCEPTION-HANDLER elsewhere to do the same thing and it appears to be working there.