| Index: core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
|
| diff --git a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
|
| index 5e312e3eecb1c00d2440491faf50b7d78709286b..187d6152e96ceccc76c7f7ee4be604d6aa1d40da 100644
|
| --- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
|
| +++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp
|
| @@ -7,7 +7,6 @@
|
| #include "../../../include/fpdfapi/fpdf_page.h"
|
| #include "../../../include/fpdfapi/fpdf_module.h"
|
| #include "../../../include/fxcodec/fx_codec.h"
|
| -#include "../../../include/fxcrt/fx_ext.h"
|
| #include "pageint.h"
|
| #include <limits.h>
|
|
|
| @@ -789,7 +788,7 @@ CFX_ByteString CPDF_StreamParser::ReadString() {
|
| break;
|
| case 1:
|
| if (ch >= '0' && ch <= '7') {
|
| - iEscCode = FXSYS_toDecimalDigit(ch);
|
| + iEscCode = ch - '0';
|
| status = 2;
|
| break;
|
| }
|
| @@ -814,7 +813,7 @@ CFX_ByteString CPDF_StreamParser::ReadString() {
|
| break;
|
| case 2:
|
| if (ch >= '0' && ch <= '7') {
|
| - iEscCode = iEscCode * 8 + FXSYS_toDecimalDigit(ch);
|
| + iEscCode = iEscCode * 8 + ch - '0';
|
| status = 3;
|
| } else {
|
| buf.AppendChar(iEscCode);
|
| @@ -824,7 +823,7 @@ CFX_ByteString CPDF_StreamParser::ReadString() {
|
| break;
|
| case 3:
|
| if (ch >= '0' && ch <= '7') {
|
| - iEscCode = iEscCode * 8 + FXSYS_toDecimalDigit(ch);
|
| + iEscCode = iEscCode * 8 + ch - '0';
|
| buf.AppendChar(iEscCode);
|
| status = 0;
|
| } else {
|
| @@ -857,33 +856,50 @@ CFX_ByteString CPDF_StreamParser::ReadHexString() {
|
| if (!PositionIsInBounds())
|
| return CFX_ByteString();
|
|
|
| + int ch = m_pBuf[m_Pos++];
|
| CFX_ByteTextBuf buf;
|
| - bool bFirst = true;
|
| + FX_BOOL bFirst = TRUE;
|
| int code = 0;
|
| - while (PositionIsInBounds()) {
|
| - int ch = m_pBuf[m_Pos++];
|
| -
|
| - if (ch == '>')
|
| + while (1) {
|
| + if (ch == '>') {
|
| break;
|
| -
|
| - if (!std::isxdigit(ch))
|
| - continue;
|
| -
|
| - int val = FXSYS_toHexDigit(ch);
|
| - if (bFirst) {
|
| - code = val * 16;
|
| - } else {
|
| - code += val;
|
| - buf.AppendByte((uint8_t)code);
|
| }
|
| - bFirst = !bFirst;
|
| + if (ch >= '0' && ch <= '9') {
|
| + if (bFirst) {
|
| + code = (ch - '0') * 16;
|
| + } else {
|
| + code += ch - '0';
|
| + buf.AppendChar((char)code);
|
| + }
|
| + bFirst = !bFirst;
|
| + } else if (ch >= 'A' && ch <= 'F') {
|
| + if (bFirst) {
|
| + code = (ch - 'A' + 10) * 16;
|
| + } else {
|
| + code += ch - 'A' + 10;
|
| + buf.AppendChar((char)code);
|
| + }
|
| + bFirst = !bFirst;
|
| + } else if (ch >= 'a' && ch <= 'f') {
|
| + if (bFirst) {
|
| + code = (ch - 'a' + 10) * 16;
|
| + } else {
|
| + code += ch - 'a' + 10;
|
| + buf.AppendChar((char)code);
|
| + }
|
| + bFirst = !bFirst;
|
| + }
|
| + if (!PositionIsInBounds())
|
| + break;
|
| +
|
| + ch = m_pBuf[m_Pos++];
|
| }
|
| - if (!bFirst)
|
| + if (!bFirst) {
|
| buf.AppendChar((char)code);
|
| -
|
| - if (buf.GetLength() > MAX_STRING_LENGTH)
|
| + }
|
| + if (buf.GetLength() > MAX_STRING_LENGTH) {
|
| return CFX_ByteString(buf.GetBuffer(), MAX_STRING_LENGTH);
|
| -
|
| + }
|
| return buf.GetByteString();
|
| }
|
|
|
|
|