Index: core/fpdfapi/fpdf_page/fpdf_page_parser.cpp |
diff --git a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp |
index 802f424274b798355f95052a4df3cb8200b0d5ec..0d16994bbee9c07d5e064cb499b4e89657fd9f20 100644 |
--- a/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp |
+++ b/core/fpdfapi/fpdf_page/fpdf_page_parser.cpp |
@@ -274,35 +274,36 @@ int CPDF_StreamContentParser::GetNextParamPos() { |
void CPDF_StreamContentParser::AddNameParam(const FX_CHAR* name, int len) { |
CFX_ByteStringC bsName(name, len); |
- int index = GetNextParamPos(); |
+ ContentParam& param = m_ParamBuf[GetNextParamPos()]; |
if (len > 32) { |
- m_ParamBuf[index].m_Type = ContentParam::OBJECT; |
- m_ParamBuf[index].m_pObject = new CPDF_Name(PDF_NameDecode(bsName)); |
+ param.m_Type = ContentParam::OBJECT; |
+ param.m_pObject = new CPDF_Name(PDF_NameDecode(bsName)); |
} else { |
- m_ParamBuf[index].m_Type = ContentParam::NAME; |
+ param.m_Type = ContentParam::NAME; |
if (bsName.Find('#') == -1) { |
- FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, name, len); |
- m_ParamBuf[index].m_Name.m_Len = len; |
+ FXSYS_memcpy(param.m_Name.m_Buffer, name, len); |
+ param.m_Name.m_Len = len; |
} else { |
CFX_ByteString str = PDF_NameDecode(bsName); |
- FXSYS_memcpy(m_ParamBuf[index].m_Name.m_Buffer, str.c_str(), |
- str.GetLength()); |
- m_ParamBuf[index].m_Name.m_Len = str.GetLength(); |
+ FXSYS_memcpy(param.m_Name.m_Buffer, str.c_str(), str.GetLength()); |
+ param.m_Name.m_Len = str.GetLength(); |
} |
} |
} |
void CPDF_StreamContentParser::AddNumberParam(const FX_CHAR* str, int len) { |
- int index = GetNextParamPos(); |
- m_ParamBuf[index].m_Type = ContentParam::NUMBER; |
- FX_atonum(CFX_ByteStringC(str, len), m_ParamBuf[index].m_Number.m_bInteger, |
- &m_ParamBuf[index].m_Number.m_Integer); |
+ ContentParam& param = m_ParamBuf[GetNextParamPos()]; |
+ param.m_Type = ContentParam::NUMBER; |
+ param.m_Number.m_bInteger = |
+ FX_atonum(CFX_ByteStringC(str, len), ¶m.m_Number.m_Integer); |
} |
+ |
void CPDF_StreamContentParser::AddObjectParam(CPDF_Object* pObj) { |
- int index = GetNextParamPos(); |
- m_ParamBuf[index].m_Type = ContentParam::OBJECT; |
- m_ParamBuf[index].m_pObject = pObj; |
+ ContentParam& param = m_ParamBuf[GetNextParamPos()]; |
+ param.m_Type = ContentParam::OBJECT; |
+ param.m_pObject = pObj; |
} |
+ |
void CPDF_StreamContentParser::ClearAllParams() { |
uint32_t index = m_ParamStartPos; |
for (uint32_t i = 0; i < m_ParamCount; i++) { |
@@ -1601,14 +1602,13 @@ void CPDF_StreamContentParser::ParsePathObject() { |
break; |
} |
case CPDF_StreamParser::Number: { |
- if (nParams == 6) { |
+ if (nParams == 6) |
break; |
- } |
- FX_BOOL bInteger; |
+ |
int value; |
- FX_atonum( |
+ bool bInteger = FX_atonum( |
CFX_ByteStringC(m_pSyntax->GetWordBuf(), m_pSyntax->GetWordSize()), |
- bInteger, &value); |
+ &value); |
params[nParams++] = bInteger ? (FX_FLOAT)value : *(FX_FLOAT*)&value; |
break; |
} |