Use newSVpvs_flags() instead of sv_2mortal(newSVpvs())
authorNicholas Clark <nick@ccl4.org>
Thu, 25 Nov 2010 13:53:28 +0000 (13:53 +0000)
committerNicholas Clark <nick@ccl4.org>
Thu, 25 Nov 2010 13:53:28 +0000 (13:53 +0000)
And similarly for newSVpvn() for a known length.

hv.c
mro.c
pod/perlguts.pod

diff --git a/hv.c b/hv.c
index 18411d6..a9fedb4 100644 (file)
--- a/hv.c
+++ b/hv.c
@@ -3428,7 +3428,7 @@ Perl_store_cop_label(pTHX_ COP *const cop, const char *label, STRLEN len,
     if (flags & ~(SVf_UTF8))
        Perl_croak(aTHX_ "panic: store_cop_label illegal flag bits 0x%" UVxf,
                   (UV)flags);
-    labelsv = sv_2mortal(newSVpvn(label, len));
+    labelsv = newSVpvn_flags(label, len, SVs_TEMP);
     if (flags & SVf_UTF8)
        SvUTF8_on(labelsv);
     cop->cop_hints_hash
diff --git a/mro.c b/mro.c
index fd805d6..a5f1de0 100644 (file)
--- a/mro.c
+++ b/mro.c
@@ -752,7 +752,7 @@ Perl_mro_package_moved(pTHX_ HV * const stash, HV * const oldstash,
     }
     if (name_count == 1) {
        if (HEK_LEN(*namep) == 4 && strnEQ(HEK_KEY(*namep), "main", 4)) {
-           namesv = sv_2mortal(newSVpvs(""));
+           namesv = newSVpvs_flags("", SVs_TEMP);
        }
        else {
            namesv = sv_2mortal(newSVhek(*namep));
index 00df255..8327db2 100644 (file)
@@ -1450,6 +1450,8 @@ L</Reference Counts and Mortality>):
     PUSHs(sv_2mortal(newSVuv(an_unsigned_integer)))
     PUSHs(sv_2mortal(newSVnv(a_double)))
     PUSHs(sv_2mortal(newSVpv("Some String",0)))
+    /* Although the last example is better written as the more efficient: */
+    PUSHs(newSVpvs_flags("Some String", SVs_TEMP))
 
 And now the Perl program calling C<tzname>, the two values will be assigned
 as in: