X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Fop%2Fmy.t;h=6a477db2bf1fdf972993efdf8407f359ab00f42c;hb=84281c3142b669e898404773f536776423f8c11b;hp=601e1d6ae8d8a32e80ea56cc5516f39639e860f8;hpb=22d4bb9ccb8701e68f9243547d7e3a3c55f70908;p=p5sagit%2Fp5-mst-13.2.git diff --git a/t/op/my.t b/t/op/my.t index 601e1d6..6a477db 100755 --- a/t/op/my.t +++ b/t/op/my.t @@ -1,8 +1,6 @@ #!./perl -# $RCSfile: my.t,v $ - -print "1..31\n"; +print "1..36\n"; sub foo { my($a, $b) = @_; @@ -99,3 +97,36 @@ for my $full (keys %fonts) { # Supposed to be copy-on-write via force_normal after a THINKFIRST check. print "$full $fonts{nok}\n"; } + +# [perl #29340] optimising away the = () left the padav returning the +# array rather than the contents, leading to 'Bizarre copy of array' error + +sub opta { my @a=() } +sub opth { my %h=() } +eval { my $x = opta }; +print "not " if $@; +print "ok 32\n"; +eval { my $x = opth }; +print "not " if $@; +print "ok 33\n"; + + +sub foo3 { + ++my $x->{foo}; + print "not " if defined $x->{bar}; + ++$x->{bar}; +} +eval { foo3(); foo3(); }; +print "not " if $@; +print "ok 34\n"; + +# my $foo = undef should always assign [perl #37776] +{ + my $count = 35; + loop: + my $test = undef; + print "not " if defined $test; + print "ok $count\n"; + $test = 42; + goto loop if ++$count < 37; +}