summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--content/renderer/pepper/pepper_truetype_font_win.cc10
-rw-r--r--ppapi/tests/test_char_set.cc3
2 files changed, 9 insertions, 4 deletions
diff --git a/content/renderer/pepper/pepper_truetype_font_win.cc b/content/renderer/pepper/pepper_truetype_font_win.cc
index e515bd1..b8c5f96 100644
--- a/content/renderer/pepper/pepper_truetype_font_win.cc
+++ b/content/renderer/pepper/pepper_truetype_font_win.cc
@@ -219,13 +219,17 @@ int32_t PepperTrueTypeFontWin::GetTable(uint32_t table_tag,
if (table_size == GDI_ERROR)
return PP_ERROR_FAILED;
+ // TODO(bbudge1) add check for when offset > file size
DWORD safe_offset = std::min(static_cast<DWORD>(offset), table_size);
DWORD safe_length = std::min(table_size - safe_offset,
static_cast<DWORD>(max_data_length));
data->resize(safe_length);
- table_size = GetFontData(hdc, table_tag, safe_offset,
- reinterpret_cast<uint8_t*>(&(*data)[0]),
- safe_length);
+ if (max_data_length == 0)
+ table_size = 0;
+ else
+ table_size = GetFontData(hdc, table_tag, safe_offset,
+ reinterpret_cast<uint8_t*>(&(*data)[0]),
+ safe_length);
if (table_size == GDI_ERROR)
return PP_ERROR_FAILED;
return static_cast<int32_t>(table_size);
diff --git a/ppapi/tests/test_char_set.cc b/ppapi/tests/test_char_set.cc
index de998d0..f7ff910 100644
--- a/ppapi/tests/test_char_set.cc
+++ b/ppapi/tests/test_char_set.cc
@@ -113,7 +113,8 @@ std::string TestCharSet::TestUTF16ToCharSet() {
std::vector<uint16_t> utf16;
utf16.push_back(0);
std::string output_buffer;
- uint32_t utf8result_len = static_cast<uint32_t>(output_buffer.size());
+ output_buffer.resize(1);
+ uint32_t utf8result_len = 0;
PP_Bool result = char_set_trusted_interface_->UTF16ToCharSet(
&utf16[0], 0, "latin1", PP_CHARSET_TRUSTED_CONVERSIONERROR_SUBSTITUTE,
&output_buffer[0], &utf8result_len);