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.

Reply via email to