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.