Index: core/fpdfapi/fpdf_page/cpdf_imageobject.cpp |
diff --git a/core/fpdfapi/fpdf_page/cpdf_imageobject.cpp b/core/fpdfapi/fpdf_page/cpdf_imageobject.cpp |
index e2defa80544be13b50a30babfe498ed7edae4a4e..70e5d8e6ba35da1fa2ebd424d982a5a4bab0708d 100644 |
--- a/core/fpdfapi/fpdf_page/cpdf_imageobject.cpp |
+++ b/core/fpdfapi/fpdf_page/cpdf_imageobject.cpp |
@@ -13,15 +13,22 @@ |
CPDF_ImageObject::CPDF_ImageObject() : m_pImage(nullptr) {} |
CPDF_ImageObject::~CPDF_ImageObject() { |
- if (!m_pImage) { |
+ if (!m_pImage) |
+ return; |
+ |
+ if (m_pImage->CanRelease()) { |
+ m_pImage->Release(); |
return; |
} |
- if (m_pImage->IsInline() || |
- (m_pImage->GetStream() && m_pImage->GetStream()->GetObjNum() == 0)) { |
- delete m_pImage; |
- } else { |
- m_pImage->GetDocument()->GetPageData()->ReleaseImage(m_pImage->GetStream()); |
+ |
+ CPDF_DocPageData* pPageData = m_pImage->GetDocument()->GetPageData(); |
+ const CPDF_Object* pImageStream = m_pImage->GetStream(); |
+ if (pPageData->HasImage(pImageStream)) { |
+ pPageData->ReleaseImage(pImageStream); |
+ return; |
} |
+ |
+ delete m_pImage; |
} |
CPDF_ImageObject* CPDF_ImageObject::Clone() const { |