Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(33)

Side by Side Diff: core/fpdfapi/edit/fpdf_edit_create.cpp

Issue 2478253002: Revert of Remove CPDF_Object::Release() in favor of direct delete (Closed)
Patch Set: Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « core/fpdfapi/edit/cpdf_creator.h ('k') | core/fpdfapi/font/fpdf_font.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 PDFium Authors. All rights reserved. 1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 6
7 #include "core/fpdfapi/edit/editint.h" 7 #include "core/fpdfapi/edit/editint.h"
8 8
9 #include <vector> 9 #include <vector>
10 10
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
463 } 463 }
464 m_bNewData = true; 464 m_bNewData = true;
465 // TODO(thestig): Move to Init() and check return value. 465 // TODO(thestig): Move to Init() and check return value.
466 if (bXRefStream) 466 if (bXRefStream)
467 ::PngEncode(pBuffer, size, &m_pData, &m_dwSize); 467 ::PngEncode(pBuffer, size, &m_pData, &m_dwSize);
468 else 468 else
469 ::FlateEncode(pBuffer, size, &m_pData, &m_dwSize); 469 ::FlateEncode(pBuffer, size, &m_pData, &m_dwSize);
470 } 470 }
471 471
472 CPDF_FlateEncoder::~CPDF_FlateEncoder() { 472 CPDF_FlateEncoder::~CPDF_FlateEncoder() {
473 if (m_bCloned) 473 if (m_bCloned && m_pDict)
474 delete m_pDict; 474 m_pDict->Release();
475 if (m_bNewData) 475 if (m_bNewData)
476 FX_Free(m_pData); 476 FX_Free(m_pData);
477 } 477 }
478 478
479 class CPDF_Encryptor { 479 class CPDF_Encryptor {
480 public: 480 public:
481 CPDF_Encryptor(CPDF_CryptoHandler* pHandler, 481 CPDF_Encryptor(CPDF_CryptoHandler* pHandler,
482 int objnum, 482 int objnum,
483 uint8_t* src_data, 483 uint8_t* src_data,
484 uint32_t src_size); 484 uint32_t src_size);
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
895 m_Offset(0), 895 m_Offset(0),
896 m_iStage(-1), 896 m_iStage(-1),
897 m_dwFlags(0), 897 m_dwFlags(0),
898 m_Pos(nullptr), 898 m_Pos(nullptr),
899 m_XrefStart(0), 899 m_XrefStart(0),
900 m_pIDArray(nullptr), 900 m_pIDArray(nullptr),
901 m_FileVersion(0) {} 901 m_FileVersion(0) {}
902 902
903 CPDF_Creator::~CPDF_Creator() { 903 CPDF_Creator::~CPDF_Creator() {
904 ResetStandardSecurity(); 904 ResetStandardSecurity();
905 if (m_bEncryptCloned) { 905 if (m_bEncryptCloned && m_pEncryptDict) {
906 delete m_pEncryptDict; 906 m_pEncryptDict->Release();
907 m_pEncryptDict = nullptr; 907 m_pEncryptDict = nullptr;
908 } 908 }
909 Clear(); 909 Clear();
910 } 910 }
911 911
912 int32_t CPDF_Creator::WriteIndirectObjectToStream(const CPDF_Object* pObj) { 912 int32_t CPDF_Creator::WriteIndirectObjectToStream(const CPDF_Object* pObj) {
913 if (!m_pXRefStream) 913 if (!m_pXRefStream)
914 return 1; 914 return 1;
915 915
916 uint32_t objnum = pObj->GetObjNum(); 916 uint32_t objnum = pObj->GetObjNum();
(...skipping 323 matching lines...) Expand 10 before | Expand all | Expand 10 after
1240 bObjStm) { 1240 bObjStm) {
1241 CPDF_Object* pObj = m_pDocument->GetOrParseIndirectObject(objnum); 1241 CPDF_Object* pObj = m_pDocument->GetOrParseIndirectObject(objnum);
1242 if (!pObj) { 1242 if (!pObj) {
1243 m_ObjectOffset[objnum] = 0; 1243 m_ObjectOffset[objnum] = 0;
1244 return 0; 1244 return 0;
1245 } 1245 }
1246 if (WriteIndirectObj(pObj)) { 1246 if (WriteIndirectObj(pObj)) {
1247 return -1; 1247 return -1;
1248 } 1248 }
1249 if (!bExistInMap) { 1249 if (!bExistInMap) {
1250 m_pDocument->DeleteIndirectObject(objnum); 1250 m_pDocument->ReleaseIndirectObject(objnum);
1251 } 1251 }
1252 } else { 1252 } else {
1253 uint8_t* pBuffer; 1253 uint8_t* pBuffer;
1254 uint32_t size; 1254 uint32_t size;
1255 m_pParser->GetIndirectBinary(objnum, pBuffer, size); 1255 m_pParser->GetIndirectBinary(objnum, pBuffer, size);
1256 if (!pBuffer) { 1256 if (!pBuffer) {
1257 return 0; 1257 return 0;
1258 } 1258 }
1259 if (object_type == 2) { 1259 if (object_type == 2) {
1260 if (m_pXRefStream) { 1260 if (m_pXRefStream) {
(...skipping 666 matching lines...) Expand 10 before | Expand all | Expand 10 after
1927 void CPDF_Creator::InitID(bool bDefault) { 1927 void CPDF_Creator::InitID(bool bDefault) {
1928 CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : nullptr; 1928 CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : nullptr;
1929 bool bNewId = !m_pIDArray; 1929 bool bNewId = !m_pIDArray;
1930 if (bNewId) { 1930 if (bNewId) {
1931 m_pIDArray.reset(new CPDF_Array); 1931 m_pIDArray.reset(new CPDF_Array);
1932 CPDF_Object* pID1 = pOldIDArray ? pOldIDArray->GetObjectAt(0) : nullptr; 1932 CPDF_Object* pID1 = pOldIDArray ? pOldIDArray->GetObjectAt(0) : nullptr;
1933 if (pID1) { 1933 if (pID1) {
1934 m_pIDArray->Add(pID1->Clone()); 1934 m_pIDArray->Add(pID1->Clone());
1935 } else { 1935 } else {
1936 std::vector<uint8_t> buffer = 1936 std::vector<uint8_t> buffer =
1937 PDF_GenerateFileID((uint32_t)(uintptr_t) this, m_dwLastObjNum); 1937 PDF_GenerateFileID((uint32_t)(uintptr_t)this, m_dwLastObjNum);
1938 CFX_ByteString bsBuffer(buffer.data(), buffer.size()); 1938 CFX_ByteString bsBuffer(buffer.data(), buffer.size());
1939 m_pIDArray->Add(new CPDF_String(bsBuffer, true)); 1939 m_pIDArray->Add(new CPDF_String(bsBuffer, true));
1940 } 1940 }
1941 } 1941 }
1942 if (!bDefault) { 1942 if (!bDefault) {
1943 return; 1943 return;
1944 } 1944 }
1945 if (pOldIDArray) { 1945 if (pOldIDArray) {
1946 CPDF_Object* pID2 = pOldIDArray->GetObjectAt(1); 1946 CPDF_Object* pID2 = pOldIDArray->GetObjectAt(1);
1947 if ((m_dwFlags & FPDFCREATE_INCREMENTAL) && m_pEncryptDict && pID2) { 1947 if ((m_dwFlags & FPDFCREATE_INCREMENTAL) && m_pEncryptDict && pID2) {
1948 m_pIDArray->Add(pID2->Clone()); 1948 m_pIDArray->Add(pID2->Clone());
1949 return; 1949 return;
1950 } 1950 }
1951 std::vector<uint8_t> buffer = 1951 std::vector<uint8_t> buffer =
1952 PDF_GenerateFileID((uint32_t)(uintptr_t) this, m_dwLastObjNum); 1952 PDF_GenerateFileID((uint32_t)(uintptr_t)this, m_dwLastObjNum);
1953 CFX_ByteString bsBuffer(buffer.data(), buffer.size()); 1953 CFX_ByteString bsBuffer(buffer.data(), buffer.size());
1954 m_pIDArray->Add(new CPDF_String(bsBuffer, true)); 1954 m_pIDArray->Add(new CPDF_String(bsBuffer, true));
1955 return; 1955 return;
1956 } 1956 }
1957 m_pIDArray->Add(m_pIDArray->GetObjectAt(0)->Clone()); 1957 m_pIDArray->Add(m_pIDArray->GetObjectAt(0)->Clone());
1958 if (m_pEncryptDict && !pOldIDArray && m_pParser && bNewId) { 1958 if (m_pEncryptDict && !pOldIDArray && m_pParser && bNewId) {
1959 if (m_pEncryptDict->GetStringFor("Filter") == "Standard") { 1959 if (m_pEncryptDict->GetStringFor("Filter") == "Standard") {
1960 CFX_ByteString user_pass = m_pParser->GetPassword(); 1960 CFX_ByteString user_pass = m_pParser->GetPassword();
1961 uint32_t flag = PDF_ENCRYPT_CONTENT; 1961 uint32_t flag = PDF_ENCRYPT_CONTENT;
1962 1962
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
2012 m_pCryptoHandler = nullptr; 2012 m_pCryptoHandler = nullptr;
2013 } 2013 }
2014 void CPDF_Creator::ResetStandardSecurity() { 2014 void CPDF_Creator::ResetStandardSecurity() {
2015 if (!m_bLocalCryptoHandler) 2015 if (!m_bLocalCryptoHandler)
2016 return; 2016 return;
2017 2017
2018 delete m_pCryptoHandler; 2018 delete m_pCryptoHandler;
2019 m_pCryptoHandler = nullptr; 2019 m_pCryptoHandler = nullptr;
2020 m_bLocalCryptoHandler = false; 2020 m_bLocalCryptoHandler = false;
2021 } 2021 }
OLDNEW
« no previous file with comments | « core/fpdfapi/edit/cpdf_creator.h ('k') | core/fpdfapi/font/fpdf_font.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698