Change 27583 by [EMAIL PROTECTED] on 2006/03/23 13:16:53
Complete the other 2 arms of the cache update code.
Affected files ...
... //depot/perl/sv.c#1207 edit
Differences ...
==== //depot/perl/sv.c#1207 (text) ====
Index: perl/sv.c
--- perl/sv.c#1206~27582~ 2006-03-23 04:44:35.000000000 -0800
+++ perl/sv.c 2006-03-23 05:16:53.000000000 -0800
@@ -5623,6 +5623,48 @@
}
}
}
+ else if (byte > cache[3]) {
+ /* New position is between the existing pair of pairs. */
+ const float keep_earlier
+ = THREEWAY_SQUARE(0, cache[3], byte, blen);
+ const float keep_later
+ = THREEWAY_SQUARE(0, byte, cache[1], blen);
+
+ if (keep_later < keep_earlier) {
+ if (keep_later < existing) {
+ cache[2] = utf8;
+ cache[3] = byte;
+ }
+ }
+ else {
+ if (keep_earlier < existing) {
+ cache[0] = utf8;
+ cache[1] = byte;
+ }
+ }
+ }
+ else {
+ /* New position is before the existing pair of pairs. */
+ const float keep_earlier
+ = THREEWAY_SQUARE(0, byte, cache[3], blen);
+ const float keep_later
+ = THREEWAY_SQUARE(0, byte, cache[1], blen);
+
+ if (keep_later < keep_earlier) {
+ if (keep_later < existing) {
+ cache[2] = utf8;
+ cache[3] = byte;
+ }
+ }
+ else {
+ if (keep_earlier < existing) {
+ cache[0] = cache[2];
+ cache[1] = cache[3];
+ cache[2] = utf8;
+ cache[3] = byte;
+ }
+ }
+ }
}
ASSERT_UTF8_CACHE(cache);
}
End of Patch.