Change 11572 by jhi@alpha on 2001/08/04 14:12:45

        Subject: UTF-8 bugs in string length & single line regex matches
        From: "Daniel P. Berrange" <[EMAIL PROTECTED]>
        Date: Fri, 3 Aug 2001 11:39:33 +0100         
        Message-ID: <[EMAIL PROTECTED]>

Affected files ...

... //depot/perl/mg.c#190 edit
... //depot/perl/t/op/length.t#6 edit

Differences ...

==== //depot/perl/mg.c#190 (text) ====
Index: perl/mg.c
--- perl/mg.c.~1~       Sat Aug  4 08:15:06 2001
+++ perl/mg.c   Sat Aug  4 08:15:06 2001
@@ -185,7 +185,13 @@
        }
     }
 
-    (void)SvPV(sv, len);
+    if (DO_UTF8(sv)) 
+    {
+        U8 *s = (U8*)SvPV(sv, len);
+        len = Perl_utf8_length(aTHX_ s, s + len);
+    }
+    else
+        (void)SvPV(sv, len);
     return len;
 }
 

==== //depot/perl/t/op/length.t#6 (text) ====
Index: perl/t/op/length.t
--- perl/t/op/length.t.~1~      Sat Aug  4 08:15:06 2001
+++ perl/t/op/length.t  Sat Aug  4 08:15:06 2001
@@ -115,3 +115,21 @@
     print "ok 13\n";
     $test++;
 }
+
+# Now for Unicode with magical vtbls
+
+{
+    require Tie::Scalar;
+    my $a;
+    tie $a, 'Tie::StdScalar';  # makes $a magical
+    $a = "\x{263A}";
+    
+    print "not " unless length($a) == 1;
+    print "ok 14\n";
+    $test++;
+
+    use bytes;
+    print "not " unless length($a) == 3;
+    print "ok 15\n";
+    $test++;
+}
End of Patch.

Reply via email to