This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Replace Perl_sv_setpvf(aTHX_ namesv, "%s/%s", dir, name); in require's
[perl5.git] / utf8.c
diff --git a/utf8.c b/utf8.c
index f5e8649..e21cb4f 100644 (file)
--- a/utf8.c
+++ b/utf8.c
@@ -378,7 +378,7 @@ Perl_is_utf8_string_loclen(pTHX_ const U8 *s, STRLEN len, const U8 **ep, STRLEN
 =for apidoc A|UV|utf8n_to_uvuni|const U8 *s|STRLEN curlen|STRLEN *retlen|U32 flags
 
 Bottom level UTF-8 decode routine.
-Returns the unicode code point value of the first character in the string C<s>
+Returns the Unicode code point value of the first character in the string C<s>
 which is assumed to be in UTF-8 encoding and no longer than C<curlen>;
 C<retlen> will be set to the length, in bytes, of that character.
 
@@ -1774,9 +1774,9 @@ S_swash_get(pTHX_ SV* swash, UV start, UV span)
     }
 
     /* create and initialize $swatch */
-    swatch = newSVpvs("");
     scur   = octets ? (span * octets) : (span + 7) / 8;
-    SvGROW(swatch, scur + 1);
+    swatch = newSV(scur);
+    SvPOK_on(swatch);
     s = (U8*)SvPVX(swatch);
     if (octets && none) {
        const U8* const e = s + scur;
@@ -2136,6 +2136,7 @@ Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV f
     const char *s, *e;
 
     sv_setpvn(dsv, "", 0);
+    SvUTF8_off(dsv);
     for (s = (const char *)spv, e = s + len; s < e; s += UTF8SKIP(s)) {
         UV u;
          /* This serves double duty as a flag and a character to print after
@@ -2167,12 +2168,14 @@ Perl_pv_uni_display(pTHX_ SV *dsv, const U8 *spv, STRLEN len, STRLEN pvlim, UV f
                 default: break;
                 }
                 if (ok) {
-                    Perl_sv_catpvf(aTHX_ dsv, "\\%c", ok);
+                    const char string = ok;
+                    sv_catpvn(dsv, &string, 1);
                 }
             }
             /* isPRINT() is the locale-blind version. */
             if (!ok && (flags & UNI_DISPLAY_ISPRINT) && isPRINT(c)) {
-                Perl_sv_catpvf(aTHX_ dsv, "%c", c);
+                const char string = c;
+                sv_catpvn(dsv, &string, 1);
                 ok = 1;
             }
         }