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.

Reply via email to