[HarfBuzz] harfbuzz-ng: Branch 'master' - 2 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Mon Oct 17 11:51:11 PDT 2011


 src/hb-object-private.hh     |    6 +++++-
 src/hb-ot-shape-normalize.cc |    5 ++++-
 2 files changed, 9 insertions(+), 2 deletions(-)

New commits:
commit 89d89646e8163b6c0874b9a3c14d4da974ea8219
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Mon Oct 17 11:50:54 2011 -0700

    Fix intrin.h b0rkage with older MSVC
    
    Reported by Jonathan Kew.

diff --git a/src/hb-object-private.hh b/src/hb-object-private.hh
index 72ed8ba..6a2f83d 100644
--- a/src/hb-object-private.hh
+++ b/src/hb-object-private.hh
@@ -63,7 +63,7 @@ typedef volatile int hb_atomic_int_t;
 #define hb_atomic_int_set(AI, V)	g_atomic_int_set (&(AI), V)
 
 
-#elif defined(_MSC_VER)
+#elif _MSC_VER >= 1600
 
 #include <intrin.h>
 
@@ -75,7 +75,11 @@ typedef long hb_atomic_int_t;
 
 #else
 
+#ifdef _MSC_VER
+#pragma message("Could not find any system to define atomic_int macros, library will NOT be thread-safe")
+#else
 #warning "Could not find any system to define atomic_int macros, library will NOT be thread-safe"
+#endif
 
 typedef volatile int hb_atomic_int_t;
 #define hb_atomic_int_add(AI, V)	((AI) += (V), (AI) - (V))
commit af913c5788e600e36d29f44fe4e77db84cf8c442
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Mon Oct 17 11:39:28 2011 -0700

    Fix infinite loop in normalization code with variation selectors
    
    Reported by Jonathan Kew.

diff --git a/src/hb-ot-shape-normalize.cc b/src/hb-ot-shape-normalize.cc
index 6d516c5..eb9f32a 100644
--- a/src/hb-ot-shape-normalize.cc
+++ b/src/hb-ot-shape-normalize.cc
@@ -143,8 +143,11 @@ decompose_multi_char_cluster (hb_ot_shape_context_t *c,
 {
   /* TODO Currently if there's a variation-selector we give-up, it's just too hard. */
   for (unsigned int i = c->buffer->idx; i < end; i++)
-    if (unlikely (is_variation_selector (c->buffer->info[i].codepoint)))
+    if (unlikely (is_variation_selector (c->buffer->info[i].codepoint))) {
+      while (c->buffer->idx < end)
+	c->buffer->next_glyph ();
       return;
+    }
 
   while (c->buffer->idx < end)
     decompose_current_glyph (c, FALSE);



More information about the HarfBuzz mailing list