It's not particularly a regression. Perl suffers from a particular over-arching bug, which is hard to fix (which is why it hasn't been fixed yet): elements on perl's execution stack are not reference counted. This means that if you empty something like an array whose elements are on the stack (and will have been aliased to elements of @_ if this is a function call), and if nothing else holds a reference count to those elements,
then they will be prematurely freed (and possibly re-allocated) while still accessible.
That commit merely causes that bug to show up where previously it happened to be masked.
For example in 5.22.0 with this code:
my @a=(3,4);
sub x {
@a = ();
print "[$_]" for @_;
print "\n";
}
x(@a);
you get:
$ perl5220 -w ~/tmp/p
Use of uninitialized value $_ in concatenation (.) or string at /home/
+davem/tmp/p line 9.
Use of uninitialized value $_ in concatenation (.) or string at /home/
+davem/tmp/p line 9.
[][]
Dave.