Change 18608 by jhi@kosh on 2003/01/31 08:24:53
Subject: [FIX] Re: UTF-8 failures (surprise!)
From: Enache Adrian <[EMAIL PROTECTED]>
Date: Fri, 31 Jan 2003 09:20:59 +0200
Message-ID: <[EMAIL PROTECTED]>
Affected files ...
... //depot/perl/regexec.c#298 edit
... //depot/perl/t/op/pat.t#187 edit
Differences ...
==== //depot/perl/regexec.c#298 (text) ====
Index: perl/regexec.c
--- perl/regexec.c#297~18533~ Mon Jan 20 18:15:29 2003
+++ perl/regexec.c Fri Jan 31 00:24:53 2003
@@ -97,6 +97,7 @@
#endif
#define REGINCLASS(p,c) (ANYOF_FLAGS(p) ? reginclass(p,c,0,0) :
ANYOF_BITMAP_TEST(p,*(c)))
+#define REGINCLASS_utf8(p,c) (ANYOF_FLAGS(p) ? reginclass(p,c,0,1) :
+ANYOF_BITMAP_TEST(p,*(c)))
/*
* Forwards.
@@ -4078,25 +4079,8 @@
if (do_utf8) {
loceol = PL_regeol;
while (hardcount < max && scan < loceol) {
- bool cont = FALSE;
- if (ANYOF_FLAGS(p) & ANYOF_UNICODE) {
- if (reginclass(p, (U8*)scan, 0, do_utf8))
- cont = TRUE;
- }
- else {
- U8 c = (U8)scan[0];
-
- if (UTF8_IS_INVARIANT(c)) {
- if (ANYOF_BITMAP_TEST(p, c))
- cont = TRUE;
- }
- else {
- if (reginclass(p, (U8*)scan, 0, do_utf8))
- cont = TRUE;
- }
- }
- if (!cont)
- break;
+ if (!REGINCLASS_utf8(p, (U8*)scan))
+ break;
scan += UTF8SKIP(scan);
hardcount++;
}
==== //depot/perl/t/op/pat.t#187 (xtext) ====
Index: perl/t/op/pat.t
--- perl/t/op/pat.t#186~18598~ Tue Jan 28 12:43:02 2003
+++ perl/t/op/pat.t Fri Jan 31 00:24:53 2003
@@ -6,7 +6,7 @@
$| = 1;
-print "1..968\n";
+print "1..972\n";
BEGIN {
chdir 't' if -d 't';
@@ -3054,5 +3054,11 @@
ok($a !~ /^\C{4}y/, q{don't match \C{4}y});
}
-# last test 968
+$_ = 'aaaaaaaaaa';
+utf8::upgrade($_); chop $_; $\="\n";
+ok(/[^\s]+/, "m/[^\s]/ utf8");
+ok(/[^\d]+/, "m/[^\d]/ utf8");
+ok(($a = $_, $_ =~ s/[^\s]+/./g), "s/[^\s]/ utf8");
+ok(($a = $_, $a =~ s/[^\d]+/./g), "s/[^\s]/ utf8");
+# last test 972
End of Patch.