Chromium Code Reviews| Index: core/src/fpdfapi/fpdf_font/fpdf_font.cpp |
| diff --git a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp |
| index 543816b03afa47f8d4dbca2eaddd1ce5934dbf4d..e5389f8c771df00cf029abf3828d5840de814cc9 100644 |
| --- a/core/src/fpdfapi/fpdf_font/fpdf_font.cpp |
| +++ b/core/src/fpdfapi/fpdf_font/fpdf_font.cpp |
| @@ -8,6 +8,7 @@ |
| #include "../../../include/fpdfapi/fpdf_page.h" |
| #include "../../../include/fpdfapi/fpdf_pageobj.h" |
| #include "../../../include/fpdfapi/fpdf_resource.h" |
| +#include "../../../include/fxcrt/fx_ext.h" |
| #include "../../../include/fxge/fx_freetype.h" |
| #include "../fpdf_page/pageint.h" |
| #include "font_int.h" |
| @@ -511,32 +512,25 @@ FX_DWORD CPDF_ToUnicodeMap::ReverseLookup(FX_WCHAR unicode) { |
| static FX_DWORD _StringToCode(const CFX_ByteStringC& str) { |
|
Tom Sepez
2015/10/29 19:28:31
test, or test caller.
dsinclair
2015/11/03 15:59:02
https://codereview.chromium.org/1428593005
|
| const FX_CHAR* buf = str.GetCStr(); |
| int len = str.GetLength(); |
| - if (len == 0) { |
| + if (len == 0) |
| return 0; |
| - } |
| + |
| int result = 0; |
| if (buf[0] == '<') { |
| for (int i = 1; i < len; i++) { |
| - int digit; |
| - if (buf[i] >= '0' && buf[i] <= '9') { |
| - digit = buf[i] - '0'; |
| - } else if (buf[i] >= 'a' && buf[i] <= 'f') { |
| - digit = buf[i] - 'a' + 10; |
| - } else if (buf[i] >= 'A' && buf[i] <= 'F') { |
| - digit = buf[i] - 'A' + 10; |
| - } else { |
| + if (!std::isxdigit(buf[i])) |
| break; |
| - } |
| - result = result * 16 + digit; |
| + result = result * 16 + HexCharToDigit(buf[i]); |
| } |
| return result; |
| } |
| + |
| for (int i = 0; i < len; i++) { |
| - if (buf[i] < '0' || buf[i] > '9') { |
| + if (!std::isdigit(buf[i])) |
| break; |
| - } |
| result = result * 10 + buf[i] - '0'; |
| } |
| + |
| return result; |
| } |
| static CFX_WideString _StringDataAdd(CFX_WideString str) { |
| @@ -560,25 +554,18 @@ static CFX_WideString _StringDataAdd(CFX_WideString str) { |
| static CFX_WideString _StringToWideString(const CFX_ByteStringC& str) { |
|
Tom Sepez
2015/10/29 19:28:31
test, or test caller.
dsinclair
2015/11/03 15:59:01
https://codereview.chromium.org/1428593005
|
| const FX_CHAR* buf = str.GetCStr(); |
| int len = str.GetLength(); |
| - if (len == 0) { |
| + if (len == 0) |
| return CFX_WideString(); |
| - } |
| + |
| CFX_WideString result; |
| if (buf[0] == '<') { |
| int byte_pos = 0; |
| FX_WCHAR ch = 0; |
| for (int i = 1; i < len; i++) { |
| - int digit; |
| - if (buf[i] >= '0' && buf[i] <= '9') { |
| - digit = buf[i] - '0'; |
| - } else if (buf[i] >= 'a' && buf[i] <= 'f') { |
| - digit = buf[i] - 'a' + 10; |
| - } else if (buf[i] >= 'A' && buf[i] <= 'F') { |
| - digit = buf[i] - 'A' + 10; |
| - } else { |
| + if (!std::isxdigit(buf[i])) |
| break; |
| - } |
| - ch = ch * 16 + digit; |
| + |
| + ch = ch * 16 + HexCharToDigit(buf[i]); |
| byte_pos++; |
| if (byte_pos == 4) { |
| result += ch; |
| @@ -588,8 +575,6 @@ static CFX_WideString _StringToWideString(const CFX_ByteStringC& str) { |
| } |
| return result; |
| } |
| - if (buf[0] == '(') { |
| - } |
| return result; |
| } |
| void CPDF_ToUnicodeMap::Load(CPDF_Stream* pStream) { |