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