| Index: core/fpdfapi/fpdf_parser/cpdf_parser.cpp
|
| diff --git a/core/fpdfapi/fpdf_parser/cpdf_parser.cpp b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
|
| index fed8400c13a7ed173554dbaea23efaf497a1e9ef..92597a2c46e61371ec9589ac6085f6515038177a 100644
|
| --- a/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
|
| +++ b/core/fpdfapi/fpdf_parser/cpdf_parser.cpp
|
| @@ -61,9 +61,7 @@ CPDF_Parser::CPDF_Parser()
|
| }
|
|
|
| CPDF_Parser::~CPDF_Parser() {
|
| - if (m_pTrailer)
|
| - m_pTrailer->Release();
|
| -
|
| + delete m_pTrailer;
|
| ReleaseEncryptHandler();
|
| SetEncryptDictionary(nullptr);
|
|
|
| @@ -73,13 +71,10 @@ CPDF_Parser::~CPDF_Parser() {
|
| }
|
|
|
| int32_t iLen = m_Trailers.GetSize();
|
| - for (int32_t i = 0; i < iLen; ++i) {
|
| - if (CPDF_Dictionary* trailer = m_Trailers.GetAt(i))
|
| - trailer->Release();
|
| - }
|
| + for (int32_t i = 0; i < iLen; ++i)
|
| + delete m_Trailers.GetAt(i);
|
|
|
| - if (m_pLinearized)
|
| - m_pLinearized->Release();
|
| + delete m_pLinearized;
|
| }
|
|
|
| uint32_t CPDF_Parser::GetLastObjNum() const {
|
| @@ -358,8 +353,7 @@ FX_BOOL CPDF_Parser::LoadAllCrossRefV4(FX_FILESIZE xrefpos) {
|
| CrossRefList.insert(CrossRefList.begin(), xrefpos);
|
| LoadCrossRefV4(xrefpos, 0, TRUE);
|
|
|
| - std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict(
|
| - LoadTrailerV4());
|
| + std::unique_ptr<CPDF_Dictionary> pDict(LoadTrailerV4());
|
| if (!pDict)
|
| return FALSE;
|
|
|
| @@ -413,8 +407,7 @@ FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV4(FX_FILESIZE xrefpos,
|
| CrossRefList.insert(CrossRefList.begin(), xrefpos);
|
| LoadCrossRefV4(xrefpos, 0, TRUE);
|
|
|
| - std::unique_ptr<CPDF_Dictionary, ReleaseDeleter<CPDF_Dictionary>> pDict(
|
| - LoadTrailerV4());
|
| + std::unique_ptr<CPDF_Dictionary> pDict(LoadTrailerV4());
|
| if (!pDict)
|
| return FALSE;
|
|
|
| @@ -591,18 +584,14 @@ FX_BOOL CPDF_Parser::LoadAllCrossRefV5(FX_FILESIZE xrefpos) {
|
| FX_BOOL CPDF_Parser::RebuildCrossRef() {
|
| m_ObjectInfo.clear();
|
| m_SortedOffset.clear();
|
| - if (m_pTrailer) {
|
| - m_pTrailer->Release();
|
| - m_pTrailer = nullptr;
|
| - }
|
| + delete m_pTrailer;
|
| + m_pTrailer = nullptr;
|
|
|
| ParserState state = ParserState::kDefault;
|
| -
|
| int32_t inside_index = 0;
|
| uint32_t objnum = 0;
|
| uint32_t gennum = 0;
|
| int32_t depth = 0;
|
| -
|
| const uint32_t kBufferSize = 4096;
|
| std::vector<uint8_t> buffer(kBufferSize);
|
|
|
| @@ -757,7 +746,7 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() {
|
| if (pRoot && pRoot->GetDict() &&
|
| pRoot->GetDict()->GetObjectFor("Pages")) {
|
| if (m_pTrailer)
|
| - m_pTrailer->Release();
|
| + delete m_pTrailer;
|
| m_pTrailer = ToDictionary(pDict->Clone());
|
| }
|
| }
|
| @@ -795,8 +784,7 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() {
|
| m_ObjectInfo[objnum].gennum = gennum;
|
| }
|
|
|
| - if (pObject)
|
| - pObject->Release();
|
| + delete pObject;
|
| }
|
| --i;
|
| state = ParserState::kDefault;
|
| @@ -813,7 +801,7 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() {
|
| CPDF_Object* pObj = m_pSyntax->GetObject(m_pDocument, 0, 0, true);
|
| if (pObj) {
|
| if (!pObj->IsDictionary() && !pObj->AsStream()) {
|
| - pObj->Release();
|
| + delete pObj;
|
| } else {
|
| CPDF_Stream* pStream = pObj->AsStream();
|
| if (CPDF_Dictionary* pTrailer =
|
| @@ -839,11 +827,11 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() {
|
| }
|
| }
|
| }
|
| - pObj->Release();
|
| + delete pObj;
|
| } else {
|
| if (pObj->IsStream()) {
|
| m_pTrailer = ToDictionary(pTrailer->Clone());
|
| - pObj->Release();
|
| + delete pObj;
|
| } else {
|
| m_pTrailer = pTrailer;
|
| }
|
| @@ -860,7 +848,7 @@ FX_BOOL CPDF_Parser::RebuildCrossRef() {
|
| m_pSyntax->RestorePos(dwSavePos);
|
| }
|
| } else {
|
| - pObj->Release();
|
| + delete pObj;
|
| }
|
| }
|
| }
|
| @@ -1417,7 +1405,7 @@ CPDF_Dictionary* CPDF_Parser::LoadTrailerV4() {
|
| if (m_pSyntax->GetKeyword() != "trailer")
|
| return nullptr;
|
|
|
| - std::unique_ptr<CPDF_Object, ReleaseDeleter<CPDF_Object>> pObj(
|
| + std::unique_ptr<CPDF_Object> pObj(
|
| m_pSyntax->GetObject(m_pDocument, 0, 0, true));
|
| if (!ToDictionary(pObj.get()))
|
| return nullptr;
|
| @@ -1469,7 +1457,7 @@ FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess,
|
|
|
| CPDF_Object* pLen = pDict->GetObjectFor("L");
|
| if (!pLen) {
|
| - m_pLinearized->Release();
|
| + delete m_pLinearized;
|
| m_pLinearized = nullptr;
|
| return FALSE;
|
| }
|
| @@ -1485,7 +1473,7 @@ FX_BOOL CPDF_Parser::IsLinearizedFile(IFX_FileRead* pFileAccess,
|
|
|
| return TRUE;
|
| }
|
| - m_pLinearized->Release();
|
| + delete m_pLinearized;
|
| m_pLinearized = nullptr;
|
| return FALSE;
|
| }
|
| @@ -1593,12 +1581,11 @@ FX_BOOL CPDF_Parser::LoadLinearizedAllCrossRefV5(FX_FILESIZE xrefpos) {
|
| CPDF_Parser::Error CPDF_Parser::LoadLinearizedMainXRefTable() {
|
| uint32_t dwSaveMetadataObjnum = m_pSyntax->m_MetadataObjnum;
|
| m_pSyntax->m_MetadataObjnum = 0;
|
| - if (m_pTrailer) {
|
| - m_pTrailer->Release();
|
| - m_pTrailer = nullptr;
|
| - }
|
|
|
| + delete m_pTrailer;
|
| + m_pTrailer = nullptr;
|
| m_pSyntax->RestorePos(m_LastXRefOffset - m_pSyntax->m_HeaderOffset);
|
| +
|
| uint8_t ch = 0;
|
| uint32_t dwCount = 0;
|
| m_pSyntax->GetNextChar(ch);
|
|
|