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 b86d00851cfcdb216c06a75a145b82661177a0ff..694d5234a8f168031dfaebb685610ab1d517ded1 100644 |
--- a/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
+++ b/core/src/fpdfapi/fpdf_page/fpdf_page_parser_old.cpp |
@@ -77,11 +77,14 @@ void CPDF_StreamContentParser::Handle_BeginImage() { |
} |
CFX_ByteString key((const FX_CHAR*)m_pSyntax->GetWordBuf() + 1, |
m_pSyntax->GetWordSize() - 1); |
- CPDF_Object* pObj = m_pSyntax->ReadNextObject(); |
+ nonstd::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj( |
+ m_pSyntax->ReadNextObject()); |
if (!key.IsEmpty()) { |
- pDict->SetAt(key, pObj, m_pDocument); |
- } else if (pObj) { |
- pObj->Release(); |
+ FX_DWORD dwObjNum = pObj->GetObjNum(); |
+ if (dwObjNum) |
+ pDict->SetAtReference(key, m_pDocument, dwObjNum); |
+ else |
+ pDict->SetAt(key, pObj.release()); |
} |
} |
_PDF_ReplaceAbbr(pDict); |
@@ -95,7 +98,7 @@ void CPDF_StreamContentParser::Handle_BeginImage() { |
pCSObj = FindResourceObj(FX_BSTRC("ColorSpace"), name); |
if (pCSObj && !pCSObj->GetObjNum()) { |
pCSObj = pCSObj->Clone(); |
- pDict->SetAt(FX_BSTRC("ColorSpace"), pCSObj, m_pDocument); |
+ pDict->SetAt(FX_BSTRC("ColorSpace"), pCSObj); |
} |
} |
} |