From e1177425a656f915657f948d965193a019702a52 Mon Sep 17 00:00:00 2001 From: Bo Xu Date: Tue, 14 Oct 2014 17:10:06 -0700 Subject: Store the address of the page data map's value for proper referencing. CPDF_Pattern objects are counted and maintained in m_PatternedMap. When a CPDF_Pattern object "pattern" is deleted, it's address is marked as NULL in m_PatternMap. This patch stores the address of CPDF_Pattern's adderss in all objects that references "pattern", to ensure valid referencing after deletion. BUG=416319, 419976, 418392 R=tsepez@chromium.org Review URL: https://codereview.chromium.org/656753002 --- core/src/fpdfapi/fpdf_page/pageint.h | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'core/src/fpdfapi/fpdf_page/pageint.h') diff --git a/core/src/fpdfapi/fpdf_page/pageint.h b/core/src/fpdfapi/fpdf_page/pageint.h index f79b8d38f3..cc35dbe744 100644 --- a/core/src/fpdfapi/fpdf_page/pageint.h +++ b/core/src/fpdfapi/fpdf_page/pageint.h @@ -364,18 +364,7 @@ public: FX_FLOAT m_TextX, m_TextY, m_TextLineX, m_TextLineY; FX_FLOAT m_TextLeading, m_TextRise, m_TextHorzScale; }; -template class CPDF_CountedObject : public CFX_Object -{ -public: - ObjClass m_Obj; - FX_DWORD m_nCount; -}; -typedef CFX_MapPtrTemplate*> CPDF_FontMap; -typedef CFX_MapPtrTemplate*> CPDF_ColorSpaceMap; -typedef CFX_MapPtrTemplate*> CPDF_PatternMap; -typedef CFX_MapPtrTemplate*> CPDF_ImageMap; -typedef CFX_MapPtrTemplate*> CPDF_IccProfileMap; -typedef CFX_MapPtrTemplate*> CPDF_FontFileMap; + template KeyType PDF_DocPageData_FindValue(const CFX_MapPtrTemplate*> &map, ValueType findValue, CPDF_CountedObject*& findData) { @@ -430,7 +419,9 @@ public: void ReleaseIccProfile(CPDF_Stream* pIccProfileStream, CPDF_IccProfile* pIccProfile); CPDF_StreamAcc* GetFontFileStreamAcc(CPDF_Stream* pFontStream); void ReleaseFontFileStreamAcc(CPDF_Stream* pFontStream, FX_BOOL bForce = FALSE); - FX_BOOL IsForceClear() const {return m_bForceClear;} + FX_BOOL IsForceClear() const {return m_bForceClear;} + CPDF_CountedColorSpace* FindColorSpacePtr(CPDF_Object* pCSObj) const; + CPDF_CountedPattern* FindPatternPtr(CPDF_Object* pPatternObj) const; CPDF_Document* m_pPDFDoc; CPDF_FontMap m_FontMap; @@ -497,6 +488,7 @@ public: return m_pBaseCS; } CPDF_ColorSpace* m_pBaseCS; + CPDF_CountedColorSpace* m_pCountedBaseCS; }; #define MAX_PAGE_OBJECTS_UNIFY_NAMING 4096 class CPDF_ResourceNaming : public CFX_Object -- cgit v1.2.3