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
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 @@
     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 @@
   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 @@
   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 @@
   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 @@
   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 @@
   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,