As of fbaac837cfba23a9d34dc7ee144d7940248222a2, when we were performing
a safe call (o&.x=) with a conditional assign (||= 1) and discarding
the result the stack would end up in a bad state due to a missing pop.
This commit fixes that by adjusting the target label of the branchnil to
be before a pop in that case (as was previously done in the
non-conditional assignment case).
Related issues
Bug #19021: Crash [BUG] Stack consistency error on ruby 3.2.0-dev
[Bug #19021] Fix safe call w/ conditional assign
As of fbaac837cfba23a9d34dc7ee144d7940248222a2, when we were performing
a safe call (
o&.x=
) with a conditional assign (||= 1
) and discardingthe result the stack would end up in a bad state due to a missing pop.
This commit fixes that by adjusting the target label of the branchnil to
be before a pop in that case (as was previously done in the
non-conditional assignment case).