if (kid->op_type == OP_NULL)
kid = OpSIBLING(kid);
if (kid)
- kid->op_flags |= OPf_MOD;
+ op_lvalue(kid, o->op_type);
}
return o;
}
};
-plan(392);
+plan(399);
run_tests() unless caller;
is $x, "\x{100}zzzz", "RT#130624: heap-use-after-free in 4-arg substr (targ)";
}
+{
+ our @ta;
+ $#ta = -1;
+ substr($#ta, 0, 2) = 23;
+ is $#ta, 23;
+ $#ta = -1;
+ substr($#ta, 0, 2) =~ s/\A..\z/23/s;
+ is $#ta, 23;
+ $#ta = -1;
+ substr($#ta, 0, 2, 23);
+ is $#ta, 23;
+ sub ta_tindex :lvalue { $#ta }
+ $#ta = -1;
+ ta_tindex() = 23;
+ is $#ta, 23;
+ $#ta = -1;
+ substr(ta_tindex(), 0, 2) = 23;
+ is $#ta, 23;
+ $#ta = -1;
+ substr(ta_tindex(), 0, 2) =~ s/\A..\z/23/s;
+ is $#ta, 23;
+ $#ta = -1;
+ substr(ta_tindex(), 0, 2, 23);
+ is $#ta, 23;
+}
+1;