Fix reverse_range() position loop
authorBehdad Esfahbod <behdad@behdad.org>
Wed, 6 Jul 2011 20:05:45 +0000 (16:05 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Wed, 6 Jul 2011 20:05:45 +0000 (16:05 -0400)
Mozilla Bug 669175 - Slow rendering of text sometimes in this case,
using direction: rtl

src/hb-buffer.cc

index 7e79eef..0c16303 100644 (file)
@@ -535,13 +535,16 @@ hb_buffer_get_glyph_positions (hb_buffer_t  *buffer,
 }
 
 
-static void
+static inline void
 reverse_range (hb_buffer_t *buffer,
               unsigned int start,
               unsigned int end)
 {
   unsigned int i, j;
 
+  if (start == end - 1)
+    return;
+
   for (i = start, j = end - 1; i < j; i++, j--) {
     hb_glyph_info_t t;
 
@@ -551,7 +554,7 @@ reverse_range (hb_buffer_t *buffer,
   }
 
   if (buffer->pos) {
-    for (i = 0, j = end - 1; i < j; i++, j--) {
+    for (i = start, j = end - 1; i < j; i++, j--) {
       hb_glyph_position_t t;
 
       t = buffer->pos[i];