Fix pragma/utf8.t # 15
Nick Ing-Simmons [Sun, 18 Mar 2001 10:57:29 +0000 (10:57 +0000)]
 - if toke.c is processing a SvUTF8 string then single quoted '...' etc.
   are SvUTF8 as well.

p4raw-id: //depot/perlio@9196

toke.c

diff --git a/toke.c b/toke.c
index b802512..3652c11 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -37,7 +37,7 @@ static I32 utf16rev_textfilter(pTHXo_ int idx, SV *sv, int maxlen);
 #define XENUMMASK 127
 
 /*#define UTF (SvUTF8(PL_linestr) && !(PL_hints & HINT_BYTE))*/
-#define UTF (PL_hints & HINT_UTF8)
+#define UTF ((PL_linestr && DO_UTF8(PL_linestr)) || PL_hints & HINT_UTF8)
 
 /* In variables name $^X, these are the legal values for X.
  * 1999-02-27 mjd-perl-patch@plover.com */
@@ -917,8 +917,11 @@ S_tokeq(pTHX_ SV *sv)
     if (s == send)
        goto finish;
     d = s;
-    if ( PL_hints & HINT_NEW_STRING )
+    if ( PL_hints & HINT_NEW_STRING ) {
        pv = sv_2mortal(newSVpvn(SvPVX(pv), len));
+       if (SvUTF8(sv))
+           SvUTF8_on(pv);
+    }
     while (s < send) {
        if (*s == '\\') {
            if (s + 1 < send && (s[1] == '\\'))