Change 18857 by [EMAIL PROTECTED] on 2003/03/09 10:46:23

        From Inaba Hiroto: the UTF-8 length cache wasn't
        updated when fbm_compile() appended a "\n".

Affected files ...

... //depot/perl/t/op/pat.t#197 edit
... //depot/perl/util.c#385 edit

Differences ...

==== //depot/perl/t/op/pat.t#197 (xtext) ====
Index: perl/t/op/pat.t
--- perl/t/op/pat.t#196~18805~  Sun Mar  2 08:29:28 2003
+++ perl/t/op/pat.t     Sun Mar  9 02:46:23 2003
@@ -6,7 +6,7 @@
 
 $| = 1;
 
-print "1..994\n";
+print "1..995\n";
 
 BEGIN {
     chdir 't' if -d 't';
@@ -3145,5 +3145,8 @@
        "[perl #21411] (??{ .. }) corrupts split's stack")
 }
 
-# last test 994
+{
+    ok("\x{100}\n" =~ /\x{100}\n$/, "UTF8 length cache and fbm_compile");  
+}
 
+# last test 995

==== //depot/perl/util.c#385 (text) ====
Index: perl/util.c
--- perl/util.c#384~18813~      Sun Mar  2 21:33:21 2003
+++ perl/util.c Sun Mar  9 02:46:23 2003
@@ -357,8 +357,12 @@
     I32 rarest = 0;
     U32 frequency = 256;
 
-    if (flags & FBMcf_TAIL)
+    if (flags & FBMcf_TAIL) {
+       MAGIC *mg = SvUTF8(sv) && SvMAGICAL(sv) ? mg_find(sv, PERL_MAGIC_utf8) : NULL;
        sv_catpvn(sv, "\n", 1);         /* Taken into account in fbm_instr() */
+       if (mg && mg->mg_len >= 0)
+           mg->mg_len++;
+    }
     s = (U8*)SvPV_force(sv, len);
     (void)SvUPGRADE(sv, SVt_PVBM);
     if (len == 0)              /* TAIL might be on a zero-length string. */
End of Patch.

Reply via email to