The code to eliminate things like our($foo); from the runtime op_next
chain in rpeep() caused the oldoldop, oldop, o vars not to form a chain of
3 adjacent ops. Instead, oldoldop and oldop ended up equal, which later
caused an assertion failure in the padrange code for something like
my($a,$b),$x,my($c,$d);
oldoldop = NULL;
goto redo;
}
- o = oldop;
+ o = oldop->op_next;
+ goto redo;
}
else if (o->op_next->op_type == OP_RV2SV) {
if (!(o->op_next->op_private & OPpDEREF)) {
eval "my ()";
is( $@, '', "eval of my() passes");
+# RT #126844
+# This triggered a compile-time assert failure in rpeep()
+eval 'my($a,$b),$x,my($c,$d)';
+pass("RT #126844");
+
#Variable number of tests due to the way the while/for loops are tested now
done_testing();