Index: third_party/ots/src/gpos.cc |
diff --git a/third_party/ots/src/gpos.cc b/third_party/ots/src/gpos.cc |
index 2625ec8966a7b3c2c92db475f1c75991c3a6341b..83d9ab0536a44960cb9d72917759b98d62f2a91f 100644 |
--- a/third_party/ots/src/gpos.cc |
+++ b/third_party/ots/src/gpos.cc |
@@ -675,13 +675,6 @@ bool ParseExtensionPositioning(const ots::Font *font, |
} // namespace |
-#define DROP_THIS_TABLE(msg_) \ |
- do { \ |
- OTS_FAILURE_MSG(msg_ ", table discarded"); \ |
- font->gpos->data = 0; \ |
- font->gpos->length = 0; \ |
- } while (0) |
- |
namespace ots { |
// As far as I checked, following fonts contain invalid GPOS table and |
@@ -749,55 +742,47 @@ bool ots_gpos_parse(Font *font, const uint8_t *data, size_t length) { |
!table.ReadU16(&offset_script_list) || |
!table.ReadU16(&offset_feature_list) || |
!table.ReadU16(&offset_lookup_list)) { |
- DROP_THIS_TABLE("Incomplete table"); |
- return true; |
+ return OTS_FAILURE_MSG("Incomplete table"); |
} |
if (version != 0x00010000) { |
- DROP_THIS_TABLE("Bad version"); |
- return true; |
+ return OTS_FAILURE_MSG("Bad version"); |
} |
if (offset_lookup_list) { |
if (offset_lookup_list < kGposHeaderSize || offset_lookup_list >= length) { |
- DROP_THIS_TABLE("Bad lookup list offset in table header"); |
- return true; |
+ return OTS_FAILURE_MSG("Bad lookup list offset in table header"); |
} |
if (!ParseLookupListTable(font, data + offset_lookup_list, |
length - offset_lookup_list, |
&kGposLookupSubtableParser, |
&gpos->num_lookups)) { |
- DROP_THIS_TABLE("Failed to parse lookup list table"); |
- return true; |
+ return OTS_FAILURE_MSG("Failed to parse lookup list table"); |
} |
} |
uint16_t num_features = 0; |
if (offset_feature_list) { |
if (offset_feature_list < kGposHeaderSize || offset_feature_list >= length) { |
- DROP_THIS_TABLE("Bad feature list offset in table header"); |
- return true; |
+ return OTS_FAILURE_MSG("Bad feature list offset in table header"); |
} |
if (!ParseFeatureListTable(font, data + offset_feature_list, |
length - offset_feature_list, gpos->num_lookups, |
&num_features)) { |
- DROP_THIS_TABLE("Failed to parse feature list table"); |
- return true; |
+ return OTS_FAILURE_MSG("Failed to parse feature list table"); |
} |
} |
if (offset_script_list) { |
if (offset_script_list < kGposHeaderSize || offset_script_list >= length) { |
- DROP_THIS_TABLE("Bad script list offset in table header"); |
- return true; |
+ return OTS_FAILURE_MSG("Bad script list offset in table header"); |
} |
if (!ParseScriptListTable(font, data + offset_script_list, |
length - offset_script_list, num_features)) { |
- DROP_THIS_TABLE("Failed to parse script list table"); |
- return true; |
+ return OTS_FAILURE_MSG("Failed to parse script list table"); |
} |
} |
@@ -830,4 +815,3 @@ void ots_gpos_free(Font *font) { |
} // namespace ots |
#undef TABLE_NAME |
-#undef DROP_THIS_TABLE |