[HarfBuzz] harfbuzz: Branch 'master' - 3 commits
Behdad Esfahbod
behdad at kemper.freedesktop.org
Wed May 9 22:32:11 UTC 2018
src/hb-coretext.cc | 2 +-
src/hb-open-type-private.hh | 2 ++
src/hb-ot-cmap-table.hh | 4 ++--
src/hb-ot-layout-common-private.hh | 13 +++----------
src/hb-private.hh | 13 +++++++++++++
src/hb-uniscribe.cc | 12 ++++++------
6 files changed, 27 insertions(+), 19 deletions(-)
New commits:
commit e99d75ea9c4fe1f64d7f8408093741a682ed5243
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed May 9 15:28:30 2018 -0700
Fix warning
diff --git a/src/hb-ot-cmap-table.hh b/src/hb-ot-cmap-table.hh
index 196b2cb7..67d20f1f 100644
--- a/src/hb-ot-cmap-table.hh
+++ b/src/hb-ot-cmap-table.hh
@@ -191,7 +191,7 @@ struct CmapSubtableFormat4
}
if (!segment
- || cp != segment->end_code + 1)
+ || cp != segment->end_code + 1u)
{
segment = segments->push ();
segment->start_code.set (cp);
@@ -199,7 +199,7 @@ struct CmapSubtableFormat4
segment->use_delta = true;
} else {
segment->end_code.set (cp);
- if (last_gid + 1 != new_gid)
+ if (last_gid + 1u != new_gid)
// gid's are not consecutive in this segment so delta
// cannot be used.
segment->use_delta = false;
commit 191c4edc5423017d9123d291462fbfa87a805218
Author: Behdad Esfahbod <behdad at behdad.org>
Date: Wed May 9 15:27:17 2018 -0700
Reinstante DEFINE_NULL_DATA
Seems like I messed up; buffer overrun got reported.
diff --git a/src/hb-open-type-private.hh b/src/hb-open-type-private.hh
index 0dfe0117..1c771b09 100644
--- a/src/hb-open-type-private.hh
+++ b/src/hb-open-type-private.hh
@@ -685,6 +685,7 @@ struct Tag : HBUINT32
public:
DEFINE_SIZE_STATIC (4);
};
+DEFINE_NULL_DATA (OT, Tag, " ");
/* Glyph index number, same as uint16 (length = 16 bits) */
typedef HBUINT16 GlyphID;
@@ -696,6 +697,7 @@ typedef HBUINT16 NameID;
struct Index : HBUINT16 {
static const unsigned int NOT_FOUND_INDEX = 0xFFFFu;
};
+DEFINE_NULL_DATA (OT, Index, "\xff\xff");
/* Offset, Null offset = 0 */
template <typename Type>
diff --git a/src/hb-ot-layout-common-private.hh b/src/hb-ot-layout-common-private.hh
index 66e35110..763ea92f 100644
--- a/src/hb-ot-layout-common-private.hh
+++ b/src/hb-ot-layout-common-private.hh
@@ -165,6 +165,7 @@ struct RangeRecord
public:
DEFINE_SIZE_STATIC (6);
};
+DEFINE_NULL_DATA (OT, RangeRecord, "\000\001");
struct IndexArray : ArrayOf<Index>
@@ -224,6 +225,7 @@ struct LangSys
public:
DEFINE_SIZE_ARRAY (6, featureIndex);
};
+DEFINE_NULL_DATA (OT, LangSys, "\0\0\xFF\xFF");
struct Script
@@ -245,16 +247,7 @@ struct Script
{ return langSys.find_index (tag, index); }
inline bool has_default_lang_sys (void) const { return defaultLangSys != 0; }
- inline const LangSys& get_default_lang_sys (void) const
- {
- if (!defaultLangSys)
- {
- /* This is the ONLY place where our null data is not all zeros.
- * So, return special data instead of using the null pool. */
- return *reinterpret_cast<const LangSys *> ("\0\0\xFF\xFF");
- }
- return this+defaultLangSys;
- }
+ inline const LangSys& get_default_lang_sys (void) const { return this+defaultLangSys; }
inline bool sanitize (hb_sanitize_context_t *c,
const Record<Script>::sanitize_closure_t * = nullptr) const
diff --git a/src/hb-private.hh b/src/hb-private.hh
index a31e4799..0dd9539f 100644
--- a/src/hb-private.hh
+++ b/src/hb-private.hh
@@ -1117,5 +1117,18 @@ static inline const Type& Null (void) {
}
#define Null(Type) Null<Type>()
+/* Specializaiton for arbitrary-content arbitrary-sized Null objects. */
+#define DEFINE_NULL_DATA(Namespace, Type, data) \
+} /* Close namespace. */ \
+static const char _Null##Type[sizeof (Namespace::Type) + 1] = data; /* +1 is for nul-termination in data */ \
+template <> \
+/*static*/ inline const Namespace::Type& Null<Namespace::Type> (void) { \
+ return *reinterpret_cast<const Namespace::Type *> (_Null##Type); \
+} \
+namespace Namespace { \
+/* The following line really exists such that we end in a place needing semicolon */ \
+static_assert (Namespace::Type::min_size + 1 <= sizeof (_Null##Type), "Null pool too small. Enlarge.")
+
+
#endif /* HB_PRIVATE_HH */
commit 93bdf9b2dfe18af0f1aa93b890f0be260f31d90e
Author: Ebrahim Byagowi <ebrahim at gnu.org>
Date: Wed May 9 23:24:17 2018 +0430
Use arrayZ on hb-coretext and hb-uniscribe and fix macOS/Win bots (#1024)
Following to 63f57f4
diff --git a/src/hb-coretext.cc b/src/hb-coretext.cc
index 837b3fb7..3924c8eb 100644
--- a/src/hb-coretext.cc
+++ b/src/hb-coretext.cc
@@ -777,7 +777,7 @@ _hb_coretext_shape (hb_shape_plan_t *shape_plan,
} else {
active_feature_t *feature = active_features.find (&event->feature);
if (feature)
- active_features.remove (feature - active_features.array);
+ active_features.remove (feature - active_features.arrayZ);
}
}
}
diff --git a/src/hb-uniscribe.cc b/src/hb-uniscribe.cc
index bc6667c3..3cd419e8 100644
--- a/src/hb-uniscribe.cc
+++ b/src/hb-uniscribe.cc
@@ -726,7 +726,7 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan,
} else {
active_feature_t *feature = active_features.find (&event->feature);
if (feature)
- active_features.remove (feature - active_features.array);
+ active_features.remove (feature - active_features.arrayZ);
}
}
@@ -737,7 +737,7 @@ _hb_uniscribe_shape (hb_shape_plan_t *shape_plan,
for (unsigned int i = 0; i < range_records.len; i++)
{
range_record_t *range = &range_records[i];
- range->props.potfRecords = feature_records.array + reinterpret_cast<uintptr_t> (range->props.potfRecords);
+ range->props.potfRecords = feature_records.arrayZ + reinterpret_cast<uintptr_t> (range->props.potfRecords);
}
}
else
@@ -916,8 +916,8 @@ retry:
&items[i].a,
script_tags[i],
language_tag,
- range_char_counts.array,
- range_properties.array,
+ range_char_counts.arrayZ,
+ range_properties.arrayZ,
range_properties.len,
pchars + chars_offset,
item_chars_len,
@@ -957,8 +957,8 @@ retry:
&items[i].a,
script_tags[i],
language_tag,
- range_char_counts.array,
- range_properties.array,
+ range_char_counts.arrayZ,
+ range_properties.arrayZ,
range_properties.len,
pchars + chars_offset,
log_clusters + chars_offset,
More information about the HarfBuzz
mailing list