[HarfBuzz] harfbuzz: Branch 'master'
Behdad Esfahbod
behdad at kemper.freedesktop.org
Sat Dec 2 23:22:32 UTC 2017
src/hb-set-private.hh | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
New commits:
commit eeb26d21d493183f54704487754d53a127b017ae
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Sat Dec 2 15:22:04 2017 -0800
[set] Actually commit fixes mentioned in previous commit!
diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh
index 2b459756..5971e9b7 100644
--- a/src/hb-set-private.hh
+++ b/src/hb-set-private.hh
@@ -35,6 +35,9 @@
* hb_set_t
*/
+/* TODO Keep a free-list so we can free pages that are completely zeroed. At that
+ * point maybe also use a sentinel value for "all-1" pages? */
+
struct hb_set_t
{
struct page_map_t
@@ -74,6 +77,7 @@ struct hb_set_t
else
{
*la |= ~(mask (a) - 1);
+ la++;
memset (la, 0xff, (char *) lb - (char *) la);
@@ -217,7 +221,7 @@ struct hb_set_t
}
inline void add_range (hb_codepoint_t a, hb_codepoint_t b)
{
- if (unlikely (in_error || a > b)) return;
+ if (unlikely (in_error || a > b || a == INVALID || b == INVALID)) return;
unsigned int ma = get_major (a);
unsigned int mb = get_major (b);
if (ma == mb)
@@ -239,6 +243,8 @@ struct hb_set_t
page->init1 ();
}
+ page = page_for_insert (b);
+ if (unlikely (!page)) return;
page->add_range (major_start (mb), b);
}
}
@@ -252,6 +258,7 @@ struct hb_set_t
}
inline void del_range (hb_codepoint_t a, hb_codepoint_t b)
{
+ /* TODO Optimize, like add_range(). */
if (unlikely (in_error)) return;
for (unsigned int i = a; i < b + 1; i++)
del (i);
More information about the HarfBuzz
mailing list