summaryrefslogtreecommitdiff
path: root/sfntly
diff options
context:
space:
mode:
authorarthurhsu@google.com <arthurhsu@google.com@672e30a5-4c29-85ac-ac6d-611c735e0a51>2011-08-10 20:06:32 +0000
committerarthurhsu@google.com <arthurhsu@google.com@672e30a5-4c29-85ac-ac6d-611c735e0a51>2011-08-10 20:06:32 +0000
commit3daf7a5c855b0640e2dd3904abe378e76a43829d (patch)
treecf3133b478f9569047efbb8a89e33259da43f154 /sfntly
parentdb6755301647bc1ad0616d7e370138bc822b4b06 (diff)
downloadsrc-3daf7a5c855b0640e2dd3904abe378e76a43829d.tar.gz
Fortify font build against error cases.
git-svn-id: http://sfntly.googlecode.com/svn/trunk/cpp/src@43 672e30a5-4c29-85ac-ac6d-611c735e0a51
Diffstat (limited to 'sfntly')
-rw-r--r--sfntly/font.cc1
-rw-r--r--sfntly/font_data_table.cc5
2 files changed, 6 insertions, 0 deletions
diff --git a/sfntly/font.cc b/sfntly/font.cc
index 814e2ee..32ecca7 100644
--- a/sfntly/font.cc
+++ b/sfntly/font.cc
@@ -387,6 +387,7 @@ void Font::Builder::BuildTablesFromBuilders(TableBuilderMap* builder_map,
}
if (table == NULL) {
#if defined (SFNTLY_NO_EXCEPTION)
+ table_map->clear();
return;
#else
std::string builder_string = "Unable to build table - ";
diff --git a/sfntly/font_data_table.cc b/sfntly/font_data_table.cc
index 1f9d1cc..e6d0984 100644
--- a/sfntly/font_data_table.cc
+++ b/sfntly/font_data_table.cc
@@ -89,6 +89,11 @@ CALLER_ATTACH FontDataTable* FontDataTable::Builder::Build() {
SubSerialize(new_data);
data = new_data;
}
+
+ if (data == NULL) {
+ return NULL; // Do not build table with NULL data.
+ }
+
FontDataTablePtr table = SubBuildTable(data);
NotifyPostTableBuild(table);
return table;