summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarthurhsu@google.com <arthurhsu@google.com@672e30a5-4c29-85ac-ac6d-611c735e0a51>2012-02-28 03:19:21 +0000
committerarthurhsu@google.com <arthurhsu@google.com@672e30a5-4c29-85ac-ac6d-611c735e0a51>2012-02-28 03:19:21 +0000
commit127cef2a54a5b6e6777761d550c1ec90e736383f (patch)
tree6219d606da70cd1f721eca15df6f0559f5ca1d6e
parent8f7575736031a19220e1a36ab2eb21c6d447dfef (diff)
downloadsrc-127cef2a54a5b6e6777761d550c1ec90e736383f.tar.gz
Work around Apple MacOS X Lion AppleMyungjo font bug.
git-svn-id: http://sfntly.googlecode.com/svn/trunk/cpp/src@128 672e30a5-4c29-85ac-ac6d-611c735e0a51
-rw-r--r--sample/chromium/subsetter_impl.cc5
-rw-r--r--sfntly/table/bitmap/index_sub_table_format1.cc3
-rw-r--r--sfntly/table/bitmap/index_sub_table_format2.cc3
-rw-r--r--sfntly/table/bitmap/index_sub_table_format3.cc3
-rw-r--r--sfntly/table/bitmap/index_sub_table_format4.cc3
-rw-r--r--sfntly/table/bitmap/index_sub_table_format5.cc3
6 files changed, 20 insertions, 0 deletions
diff --git a/sample/chromium/subsetter_impl.cc b/sample/chromium/subsetter_impl.cc
index 7e7cf61..3708f44 100644
--- a/sample/chromium/subsetter_impl.cc
+++ b/sample/chromium/subsetter_impl.cc
@@ -313,6 +313,11 @@ bool InitializeBitmapBuilder(EbdtTable::Builder* ebdt, EblcTable::Builder* eblc,
IntegerList removed_indexes;
BitmapGlyphInfoMap info_map;
for (size_t j = 0; j < index_builders->size(); ++j) {
+ if ((*index_builders)[j] == NULL) {
+ // Subtable is malformed, let's just skip it.
+ removed_indexes.push_back(j);
+ continue;
+ }
int32_t first_glyph_id = (*index_builders)[j]->first_glyph_index();
int32_t last_glyph_id = (*index_builders)[j]->last_glyph_index();
if (!HasOverlap(first_glyph_id, last_glyph_id, glyph_ids)) {
diff --git a/sfntly/table/bitmap/index_sub_table_format1.cc b/sfntly/table/bitmap/index_sub_table_format1.cc
index db73723..5199e18 100644
--- a/sfntly/table/bitmap/index_sub_table_format1.cc
+++ b/sfntly/table/bitmap/index_sub_table_format1.cc
@@ -121,6 +121,9 @@ IndexSubTableFormat1::Builder::CreateBuilder(ReadableFontData* data,
ReadableFontDataPtr new_data;
new_data.Attach(down_cast<ReadableFontData*>(
data->Slice(index_sub_table_offset, length)));
+ if (new_data == NULL) {
+ return NULL;
+ }
IndexSubTableFormat1BuilderPtr output =
new IndexSubTableFormat1::Builder(new_data,
first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format2.cc b/sfntly/table/bitmap/index_sub_table_format2.cc
index b3bffda..ce73e9b 100644
--- a/sfntly/table/bitmap/index_sub_table_format2.cc
+++ b/sfntly/table/bitmap/index_sub_table_format2.cc
@@ -139,6 +139,9 @@ IndexSubTableFormat2::Builder::CreateBuilder(ReadableFontData* data,
ReadableFontDataPtr new_data;
new_data.Attach(down_cast<ReadableFontData*>(
data->Slice(index_sub_table_offset, length)));
+ if (new_data == NULL) {
+ return NULL;
+ }
IndexSubTableFormat2BuilderPtr output =
new IndexSubTableFormat2::Builder(new_data,
first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format3.cc b/sfntly/table/bitmap/index_sub_table_format3.cc
index b3e418f..e2679b7 100644
--- a/sfntly/table/bitmap/index_sub_table_format3.cc
+++ b/sfntly/table/bitmap/index_sub_table_format3.cc
@@ -134,6 +134,9 @@ IndexSubTableFormat3::Builder::CreateBuilder(ReadableFontData* data,
ReadableFontDataPtr new_data;
new_data.Attach(down_cast<ReadableFontData*>(
data->Slice(index_sub_table_offset, length)));
+ if (new_data == NULL) {
+ return NULL;
+ }
IndexSubTableFormat3BuilderPtr output =
new IndexSubTableFormat3::Builder(new_data,
first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format4.cc b/sfntly/table/bitmap/index_sub_table_format4.cc
index 23f3e47..5baa2a5 100644
--- a/sfntly/table/bitmap/index_sub_table_format4.cc
+++ b/sfntly/table/bitmap/index_sub_table_format4.cc
@@ -168,6 +168,9 @@ IndexSubTableFormat4::Builder::CreateBuilder(ReadableFontData* data,
ReadableFontDataPtr new_data;
new_data.Attach(down_cast<ReadableFontData*>(
data->Slice(index_sub_table_offset, length)));
+ if (new_data == NULL) {
+ return NULL;
+ }
IndexSubTableFormat4BuilderPtr output =
new IndexSubTableFormat4::Builder(new_data,
first_glyph_index,
diff --git a/sfntly/table/bitmap/index_sub_table_format5.cc b/sfntly/table/bitmap/index_sub_table_format5.cc
index b4ab1b8..0ca21fe 100644
--- a/sfntly/table/bitmap/index_sub_table_format5.cc
+++ b/sfntly/table/bitmap/index_sub_table_format5.cc
@@ -141,6 +141,9 @@ IndexSubTableFormat5::Builder::CreateBuilder(ReadableFontData* data,
ReadableFontDataPtr new_data;
new_data.Attach(down_cast<ReadableFontData*>(
data->Slice(index_sub_table_offset, length)));
+ if (new_data == NULL) {
+ return NULL;
+ }
IndexSubTableFormat5BuilderPtr output =
new IndexSubTableFormat5::Builder(new_data,
first_glyph_index,