Project

General

Profile

« Previous | Next » 

Revision 1f6d8450

Added by nicholasdower (Nick Dower) 2 months ago

[Bug #21313] Handle it in rescue and ensure blocks.

The following is crashing for me:

ruby --yjit --yjit-call-threshold=1 -e '1.tap { raise rescue p it }' ruby: YJIT has panicked. More info to follow... thread '<unnamed>' panicked at ./yjit/src/codegen.rs:2402:14: ... 

It seems it sometimes points to the wrong value:

ruby -e '1.tap { raise rescue p it }' false ruby -e '1.tap { begin; raise; ensure; p it; end } rescue nil' false 

But only when $! is set:

ruby -e '1.tap { begin; nil; ensure; p it; end }' 1 ruby -e '1.tap { begin; nil; rescue; ensure; p it; end }' 1 ruby -e '1.tap { begin; raise; rescue; ensure; p it; end }' 1