[gambit-list] with-exception-handler versus with-exception-catcher -- bug?

Jason Felice jason.m.felice at gmail.com
Sun Feb 3 09:40:10 EST 2013


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.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.iro.umontreal.ca/pipermail/gambit-list/attachments/20130203/b335e37b/attachment.htm>


More information about the Gambit-list mailing list