This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Call FETCH once for rcatline
authorFather Chrysostomos <sprout@cpan.org>
Thu, 24 Nov 2011 07:32:30 +0000 (23:32 -0800)
committerFather Chrysostomos <sprout@cpan.org>
Thu, 24 Nov 2011 09:45:31 +0000 (01:45 -0800)
pp_hot.c
t/op/tie_fetch_count.t

index eb8fe4f..70eb5a1 100644 (file)
--- a/pp_hot.c
+++ b/pp_hot.c
@@ -1614,12 +1614,12 @@ Perl_do_readline(pTHX)
            mg_get(sv);
        if (SvROK(sv)) {
            if (type == OP_RCATLINE)
-               SvPV_force_nolen(sv);
+               SvPV_force_nomg_nolen(sv);
            else
                sv_unref(sv);
        }
        else if (isGV_with_GP(sv)) {
-           SvPV_force_nolen(sv);
+           SvPV_force_nomg_nolen(sv);
        }
        SvUPGRADE(sv, SVt_PV);
        tmplen = SvLEN(sv);     /* remember if already alloced */
@@ -1632,7 +1632,7 @@ Perl_do_readline(pTHX)
        offset = 0;
        if (type == OP_RCATLINE && SvOK(sv)) {
            if (!SvPOK(sv)) {
-               SvPV_force_nolen(sv);
+               SvPV_force_nomg_nolen(sv);
            }
            offset = SvCUR(sv);
        }
index 3198105..d9d4989 100644 (file)
@@ -7,7 +7,7 @@ BEGIN {
     chdir 't' if -d 't';
     @INC = '../lib';
     require './test.pl';
-    plan (tests => 295);
+    plan (tests => 298);
 }
 
 use strict;
@@ -121,6 +121,12 @@ $dummy  = atan2 $var, 1 ; check_count 'atan2';
 # Readline/glob
 tie my $var0, "main", \*DATA;
 $dummy  = <$var0>       ; check_count '<readline>';
+$var    = \1;
+$var   .= <DATA>        ; check_count '$tiedref .= <rcatline>';
+$var    = "tied";
+$var   .= <DATA>        ; check_count '$tiedstr .= <rcatline>';
+$var    = *foo;
+$var   .= <DATA>        ; check_count '$tiedglob .= <rcatline>';
 $dummy  = <${var}>      ; check_count '<glob>';
 
 # File operators