Project

General

Profile

« Previous | Next » 

Revision 4921845b

Added by nicholasdower (Nick Dower) about 1 month 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