This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
vivify array elements when putting them on stack
authorZefram <zefram@fysh.org>
Tue, 16 Jan 2018 06:22:17 +0000 (06:22 +0000)
committerZefram <zefram@fysh.org>
Tue, 16 Jan 2018 06:22:17 +0000 (06:22 +0000)
commit6661956a23de82b41adc406200054293d6d7aded
treedfdbb337bf5531eb9b0d1c9e4b8fd8bd2c647e03
parenta97021b9d2cff6f0f8cbe5a5dd51187c5bad275e
vivify array elements when putting them on stack

When the elements of an array are put on the stack, by a padav, rv2av,
or padrange op, null pointers in the AvARRAY were being pushed as
&PL_sv_undef, which was OK in rvalue contexts but caused misbehaviour
in lvalue contexts.  Change this to vivify these elements.  There's no
attempt here to limit the vivification to lvalue contexts: the existing
op flags aren't enough to detect \(@a), and attempting to catch all
cases where a new flag needs to be set would be an error-prone process.
Fixes [perl #8910].
pp_hot.c
t/op/array.t