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

Side by Side Diff: core/src/fpdfapi/fpdf_parser/fpdf_parser_objects.cpp

Issue 1297713003: Don't bother checking pointers before delete[] and FX_Free(). (Closed) Base URL: https://pdfium.googlesource.com/pdfium@master
Patch Set: rebase Created 5 years, 4 months 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
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 "../../../include/fpdfapi/fpdf_parser.h" 7 #include "../../../include/fpdfapi/fpdf_parser.h"
8 #include "../../../include/fxcrt/fx_string.h" 8 #include "../../../include/fxcrt/fx_string.h"
9 9
10 // static 10 // static
(...skipping 810 matching lines...) Expand 10 before | Expand all | Expand 10 after
821 } 821 }
822 CPDF_Stream::CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict) 822 CPDF_Stream::CPDF_Stream(uint8_t* pData, FX_DWORD size, CPDF_Dictionary* pDict)
823 : CPDF_Object(PDFOBJ_STREAM) { 823 : CPDF_Object(PDFOBJ_STREAM) {
824 m_pDict = pDict; 824 m_pDict = pDict;
825 m_dwSize = size; 825 m_dwSize = size;
826 m_GenNum = (FX_DWORD)-1; 826 m_GenNum = (FX_DWORD)-1;
827 m_pDataBuf = pData; 827 m_pDataBuf = pData;
828 m_pCryptoHandler = NULL; 828 m_pCryptoHandler = NULL;
829 } 829 }
830 CPDF_Stream::~CPDF_Stream() { 830 CPDF_Stream::~CPDF_Stream() {
831 if (m_GenNum == (FX_DWORD)-1 && m_pDataBuf != NULL) { 831 if (m_GenNum == (FX_DWORD)-1) {
832 FX_Free(m_pDataBuf); 832 FX_Free(m_pDataBuf);
833 } 833 }
834 if (m_pDict) { 834 if (m_pDict) {
835 m_pDict->Release(); 835 m_pDict->Release();
836 } 836 }
837 } 837 }
838 void CPDF_Stream::InitStream(CPDF_Dictionary* pDict) { 838 void CPDF_Stream::InitStream(CPDF_Dictionary* pDict) {
839 if (pDict) { 839 if (pDict) {
840 if (m_pDict) { 840 if (m_pDict) {
841 m_pDict->Release(); 841 m_pDict->Release();
842 } 842 }
843 m_pDict = pDict; 843 m_pDict = pDict;
844 } 844 }
845 if (m_GenNum == (FX_DWORD)-1) { 845 if (m_GenNum == (FX_DWORD)-1) {
846 if (m_pDataBuf) { 846 FX_Free(m_pDataBuf);
847 FX_Free(m_pDataBuf);
848 }
849 } 847 }
850 m_GenNum = 0; 848 m_GenNum = 0;
851 m_pFile = NULL; 849 m_pFile = NULL;
852 m_pCryptoHandler = NULL; 850 m_pCryptoHandler = NULL;
853 m_FileOffset = 0; 851 m_FileOffset = 0;
854 } 852 }
855 void CPDF_Stream::InitStream(uint8_t* pData, 853 void CPDF_Stream::InitStream(uint8_t* pData,
856 FX_DWORD size, 854 FX_DWORD size,
857 CPDF_Dictionary* pDict) { 855 CPDF_Dictionary* pDict) {
858 InitStream(pDict); 856 InitStream(pDict);
859 m_GenNum = (FX_DWORD)-1; 857 m_GenNum = (FX_DWORD)-1;
860 m_pDataBuf = FX_Alloc(uint8_t, size); 858 m_pDataBuf = FX_Alloc(uint8_t, size);
861 if (pData) { 859 if (pData) {
862 FXSYS_memcpy(m_pDataBuf, pData, size); 860 FXSYS_memcpy(m_pDataBuf, pData, size);
863 } 861 }
864 m_dwSize = size; 862 m_dwSize = size;
865 if (m_pDict) { 863 if (m_pDict) {
866 m_pDict->SetAtInteger(FX_BSTRC("Length"), size); 864 m_pDict->SetAtInteger(FX_BSTRC("Length"), size);
867 } 865 }
868 } 866 }
869 void CPDF_Stream::SetData(const uint8_t* pData, 867 void CPDF_Stream::SetData(const uint8_t* pData,
870 FX_DWORD size, 868 FX_DWORD size,
871 FX_BOOL bCompressed, 869 FX_BOOL bCompressed,
872 FX_BOOL bKeepBuf) { 870 FX_BOOL bKeepBuf) {
873 if (m_GenNum == (FX_DWORD)-1) { 871 if (m_GenNum == (FX_DWORD)-1) {
874 if (m_pDataBuf) { 872 FX_Free(m_pDataBuf);
875 FX_Free(m_pDataBuf);
876 }
877 } else { 873 } else {
878 m_GenNum = (FX_DWORD)-1; 874 m_GenNum = (FX_DWORD)-1;
879 m_pCryptoHandler = NULL; 875 m_pCryptoHandler = NULL;
880 } 876 }
881 if (bKeepBuf) { 877 if (bKeepBuf) {
882 m_pDataBuf = (uint8_t*)pData; 878 m_pDataBuf = (uint8_t*)pData;
883 } else { 879 } else {
884 m_pDataBuf = FX_Alloc(uint8_t, size); 880 m_pDataBuf = FX_Alloc(uint8_t, size);
885 if (pData) { 881 if (pData) {
886 FXSYS_memcpy(m_pDataBuf, pData, size); 882 FXSYS_memcpy(m_pDataBuf, pData, size);
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after
1063 if (pSrcData != pStream->m_pDataBuf && pSrcData != m_pData) { 1059 if (pSrcData != pStream->m_pDataBuf && pSrcData != m_pData) {
1064 FX_Free(pSrcData); 1060 FX_Free(pSrcData);
1065 } 1061 }
1066 if (pDecryptedData != pSrcData && pDecryptedData != m_pData) { 1062 if (pDecryptedData != pSrcData && pDecryptedData != m_pData) {
1067 FX_Free(pDecryptedData); 1063 FX_Free(pDecryptedData);
1068 } 1064 }
1069 m_pSrcData = NULL; 1065 m_pSrcData = NULL;
1070 m_bNewBuf = m_pData != pStream->m_pDataBuf; 1066 m_bNewBuf = m_pData != pStream->m_pDataBuf;
1071 } 1067 }
1072 CPDF_StreamAcc::~CPDF_StreamAcc() { 1068 CPDF_StreamAcc::~CPDF_StreamAcc() {
1073 if (m_bNewBuf && m_pData) { 1069 if (m_bNewBuf) {
1074 FX_Free(m_pData); 1070 FX_Free(m_pData);
1075 } 1071 }
1076 if (m_pSrcData) { 1072 FX_Free(m_pSrcData);
1077 FX_Free(m_pSrcData);
1078 }
1079 } 1073 }
1080 const uint8_t* CPDF_StreamAcc::GetData() const { 1074 const uint8_t* CPDF_StreamAcc::GetData() const {
1081 if (m_bNewBuf) { 1075 if (m_bNewBuf) {
1082 return m_pData; 1076 return m_pData;
1083 } 1077 }
1084 if (!m_pStream) { 1078 if (!m_pStream) {
1085 return NULL; 1079 return NULL;
1086 } 1080 }
1087 return m_pStream->m_pDataBuf; 1081 return m_pStream->m_pDataBuf;
1088 } 1082 }
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
1212 } 1206 }
1213 pObj->m_ObjNum = objnum; 1207 pObj->m_ObjNum = objnum;
1214 m_IndirectObjs.SetAt((void*)(uintptr_t)objnum, pObj); 1208 m_IndirectObjs.SetAt((void*)(uintptr_t)objnum, pObj);
1215 if (m_LastObjNum < objnum) { 1209 if (m_LastObjNum < objnum) {
1216 m_LastObjNum = objnum; 1210 m_LastObjNum = objnum;
1217 } 1211 }
1218 } 1212 }
1219 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const { 1213 FX_DWORD CPDF_IndirectObjects::GetLastObjNum() const {
1220 return m_LastObjNum; 1214 return m_LastObjNum;
1221 } 1215 }
OLDNEW
« no previous file with comments | « core/src/fpdfapi/fpdf_parser/fpdf_parser_encrypt.cpp ('k') | core/src/fpdfapi/fpdf_parser/fpdf_parser_parser.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698