I have this fixed locally but I am terribly uncomfortable with my fixes and will not check them in for 9.1.3.0. The actual issue (@phlui61 is correct Array is not part of this although the test case I got from MRI happens to wrap in an array) is that our recv_post_args instr expects to walk from end of incoming arg list. In this case, we pass in more args than can be filled so we walk from the extra arg back.
My fix corrects procs to cull their arg list to match the blocks expected arity. I am not in love with that solution partially because we have to construct a second args list. MRI as I discovered counts forward and calculates where post args begin. That is a better solution and one we should do.
This test in mri test suite shows it (and quite a bit more):
recv_post_arg incorrectly binds d and e to 5,6 instead of 4,5.
The text was updated successfully, but these errors were encountered: