| Index: core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| index 255d0ce29cade6840340e5ac51253341f1a0985e..eaff29d8125680515dd0401880a003bf0350554a 100644
|
| --- a/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| +++ b/core/src/fpdfapi/fpdf_parser/fpdf_parser_decode.cpp
|
| @@ -8,6 +8,7 @@
|
| #include "../../../include/fpdfapi/fpdf_parser.h"
|
| #include "../../../include/fpdfapi/fpdf_module.h"
|
| #include "../../../include/fxcodec/fx_codec.h"
|
| +#include "../../../include/fxcrt/fx_ext.h"
|
|
|
| #define _STREAM_MAX_SIZE_ 20 * 1024 * 1024
|
|
|
| @@ -135,23 +136,20 @@ FX_DWORD _HexDecode(const uint8_t* src_buf,
|
| continue;
|
|
|
| int digit;
|
| - if (ch <= '9' && ch >= '0') {
|
| - digit = ch - '0';
|
| - } else if (ch <= 'f' && ch >= 'a') {
|
| - digit = ch - 'a' + 10;
|
| - } else if (ch <= 'F' && ch >= 'A') {
|
| - digit = ch - 'A' + 10;
|
| + if (std::isxdigit(ch)) {
|
| + digit = HexCharToDigit(ch);
|
| } else if (ch == '>') {
|
| i++;
|
| break;
|
| } else {
|
| continue;
|
| }
|
| - if (bFirstDigit) {
|
| +
|
| + if (bFirstDigit)
|
| dest_buf[dest_size] = digit * 16;
|
| - } else {
|
| + else
|
| dest_buf[dest_size++] += digit;
|
| - }
|
| +
|
| bFirstDigit = !bFirstDigit;
|
| }
|
| if (!bFirstDigit) {
|
|
|