Index: third_party/harfbuzz-ng/src/hb-private.hh |
diff --git a/third_party/harfbuzz-ng/src/hb-private.hh b/third_party/harfbuzz-ng/src/hb-private.hh |
index 8121640f01c2beb65ef249d6dedaf73c6fe88176..4b72260ed5cb4a510dde9320e25a4ed237326487 100644 |
--- a/third_party/harfbuzz-ng/src/hb-private.hh |
+++ b/third_party/harfbuzz-ng/src/hb-private.hh |
@@ -79,6 +79,9 @@ static inline Type MIN (const Type &a, const Type &b) { return a < b ? a : b; } |
template <typename Type> |
static inline Type MAX (const Type &a, const Type &b) { return a > b ? a : b; } |
+static inline unsigned int DIV_CEIL (const unsigned int a, unsigned int b) |
+{ return (a + (b - 1)) / b; } |
+ |
#undef ARRAY_LENGTH |
template <typename Type, unsigned int n> |
@@ -321,14 +324,22 @@ struct hb_prealloced_array_t |
inline void pop (void) |
{ |
len--; |
- /* TODO: shrink array if needed */ |
+ } |
+ |
+ inline void remove (unsigned int i) |
+ { |
+ if (unlikely (i >= len)) |
+ return; |
+ memmove (static_cast<void *> (&array[i]), |
+ static_cast<void *> (&array[i + 1]), |
+ (len - i - 1) * sizeof (Type)); |
+ len--; |
} |
inline void shrink (unsigned int l) |
{ |
if (l < len) |
len = l; |
- /* TODO: shrink array if needed */ |
} |
template <typename T> |
@@ -376,7 +387,7 @@ struct hb_prealloced_array_t |
} |
}; |
-#define HB_AUTO_ARRAY_PREALLOCED 64 |
+#define HB_AUTO_ARRAY_PREALLOCED 16 |
template <typename Type> |
struct hb_auto_array_t : hb_prealloced_array_t <Type, HB_AUTO_ARRAY_PREALLOCED> |
{ |
@@ -595,7 +606,7 @@ _hb_debug_msg_va (const char *what, |
#define ULBAR "\342\225\257" /* U+256F BOX DRAWINGS LIGHT ARC UP AND LEFT */ |
#define LBAR "\342\225\264" /* U+2574 BOX DRAWINGS LIGHT LEFT */ |
static const char bars[] = VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR VBAR; |
- fprintf (stderr, "%2d %s" VRBAR "%s", |
+ fprintf (stderr, "%2u %s" VRBAR "%s", |
level, |
bars + sizeof (bars) - 1 - MIN ((unsigned int) sizeof (bars), (unsigned int) (sizeof (VBAR) - 1) * level), |
level_dir ? (level_dir > 0 ? DLBAR : ULBAR) : LBAR); |