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.