This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fix for [perl #8931], call magic only once for join's first arg.
authorBrian Fraser <fraserbn@gmail.com>
Fri, 25 May 2012 05:44:20 +0000 (02:44 -0300)
committerFather Chrysostomos <sprout@cpan.org>
Fri, 25 May 2012 15:28:54 +0000 (08:28 -0700)
doop.c
t/op/tie.t

diff --git a/doop.c b/doop.c
index a562536..1bd16b5 100644 (file)
--- a/doop.c
+++ b/doop.c
@@ -720,7 +720,7 @@ Perl_do_join(pTHX_ register SV *sv, SV *delim, register SV **mark, register SV *
 
     if (delimlen) {
        for (; items > 0; items--,mark++) {
-           sv_catsv(sv,delim);
+           sv_catsv_nomg(sv,delim);
            sv_catsv(sv,*mark);
        }
     }
index 9301bb3..fcbf7a5 100644 (file)
@@ -1259,3 +1259,21 @@ $h{i}{j} = 'k';
 print $h{i}{j}, "\n";
 EXPECT
 k
+########
+
+# [perl #8931] FETCH for tied $" called an odd number of times.
+use strict;
+my $i = 0;
+sub A::TIESCALAR {bless [] => 'A'}
+sub A::FETCH {print ++ $i, "\n"}
+my @a = ("", "", "");
+
+tie $" => 'A';
+"@a";
+
+$i = 0;
+tie my $a => 'A';
+join $a, 1..10;
+EXPECT
+1
+1