| Index: core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| diff --git a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| index 0a833a4835ddf9ee8c78e7d840524798c49fb596..09833d82cca619629c11f21ce6dcbd5e3ddcfdc1 100644
|
| --- a/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| +++ b/core/fpdfapi/fpdf_edit/fpdf_edit_create.cpp
|
| @@ -388,8 +388,8 @@ class CPDF_FlateEncoder {
|
| CPDF_FlateEncoder(CPDF_Stream* pStream, FX_BOOL bFlateEncode);
|
| CPDF_FlateEncoder(const uint8_t* pBuffer,
|
| uint32_t size,
|
| - FX_BOOL bFlateEncode,
|
| - FX_BOOL bXRefStream = FALSE);
|
| + bool bFlateEncode,
|
| + bool bXRefStream);
|
| ~CPDF_FlateEncoder();
|
|
|
| void CloneDict();
|
| @@ -439,7 +439,8 @@ CPDF_FlateEncoder::CPDF_FlateEncoder(CPDF_Stream* pStream, FX_BOOL bFlateEncode)
|
|
|
| m_bNewData = TRUE;
|
| m_bCloned = TRUE;
|
| - ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), m_pData, m_dwSize);
|
| + // TODO(thestig): Move to Init() and check return value.
|
| + ::FlateEncode(m_Acc.GetData(), m_Acc.GetSize(), &m_pData, &m_dwSize);
|
| m_pDict = ToDictionary(pStream->GetDict()->Clone());
|
| m_pDict->SetAtInteger("Length", m_dwSize);
|
| m_pDict->SetAtName("Filter", "FlateDecode");
|
| @@ -448,8 +449,8 @@ CPDF_FlateEncoder::CPDF_FlateEncoder(CPDF_Stream* pStream, FX_BOOL bFlateEncode)
|
|
|
| CPDF_FlateEncoder::CPDF_FlateEncoder(const uint8_t* pBuffer,
|
| uint32_t size,
|
| - FX_BOOL bFlateEncode,
|
| - FX_BOOL bXRefStream)
|
| + bool bFlateEncode,
|
| + bool bXRefStream)
|
| : m_pData(nullptr),
|
| m_dwSize(0),
|
| m_pDict(nullptr),
|
| @@ -461,10 +462,11 @@ CPDF_FlateEncoder::CPDF_FlateEncoder(const uint8_t* pBuffer,
|
| return;
|
| }
|
| m_bNewData = TRUE;
|
| + // TODO(thestig): Move to Init() and check return value.
|
| if (bXRefStream)
|
| - ::FlateEncode(pBuffer, size, 12, 1, 8, 7, m_pData, m_dwSize);
|
| + ::PngEncode(pBuffer, size, &m_pData, &m_dwSize);
|
| else
|
| - ::FlateEncode(pBuffer, size, m_pData, m_dwSize);
|
| + ::FlateEncode(pBuffer, size, &m_pData, &m_dwSize);
|
| }
|
|
|
| CPDF_FlateEncoder::~CPDF_FlateEncoder() {
|
| @@ -577,7 +579,7 @@ FX_FILESIZE CPDF_ObjectStream::End(CPDF_Creator* pCreator) {
|
|
|
| tempBuffer << m_Buffer;
|
| CPDF_FlateEncoder encoder(tempBuffer.GetBuffer(), tempBuffer.GetLength(),
|
| - TRUE);
|
| + true, false);
|
| CPDF_Encryptor encryptor(pCreator->m_pCryptoHandler, m_dwObjNum,
|
| encoder.m_pData, encoder.m_dwSize);
|
| if ((len = pFile->AppendDWord(encryptor.m_dwSize)) < 0) {
|
| @@ -785,26 +787,24 @@ FX_BOOL CPDF_XRefStream::GenerateXRefStream(CPDF_Creator* pCreator,
|
| }
|
| offset += offset_len + 6;
|
| }
|
| - FX_BOOL bPredictor = TRUE;
|
| CPDF_FlateEncoder encoder(m_Buffer.GetBuffer(), m_Buffer.GetLength(), TRUE,
|
| - bPredictor);
|
| - if (pFile->AppendString("/Filter /FlateDecode") < 0) {
|
| + TRUE);
|
| + if (pFile->AppendString("/Filter /FlateDecode") < 0)
|
| return FALSE;
|
| - }
|
| +
|
| offset += 20;
|
| - if (bPredictor) {
|
| - if ((len = pFile->AppendString("/DecodeParms<</Columns 7/Predictor 12>>")) <
|
| - 0) {
|
| - return FALSE;
|
| - }
|
| - offset += len;
|
| - }
|
| - if (pFile->AppendString("/Length ") < 0) {
|
| + if ((len = pFile->AppendString("/DecodeParms<</Columns 7/Predictor 12>>")) <
|
| + 0) {
|
| return FALSE;
|
| }
|
| - if ((len = pFile->AppendDWord(encoder.m_dwSize)) < 0) {
|
| +
|
| + offset += len;
|
| + if (pFile->AppendString("/Length ") < 0)
|
| return FALSE;
|
| - }
|
| +
|
| + if ((len = pFile->AppendDWord(encoder.m_dwSize)) < 0)
|
| + return FALSE;
|
| +
|
| offset += len + 8;
|
| if (bEOF) {
|
| if ((len = PDF_CreatorWriteTrailer(pCreator->m_pDocument, pFile,
|
| @@ -899,7 +899,7 @@ CPDF_Creator::~CPDF_Creator() {
|
| ResetStandardSecurity();
|
| if (m_bEncryptCloned && m_pEncryptDict) {
|
| m_pEncryptDict->Release();
|
| - m_pEncryptDict = NULL;
|
| + m_pEncryptDict = nullptr;
|
| }
|
| Clear();
|
| }
|
| @@ -1441,7 +1441,7 @@ int32_t CPDF_Creator::WriteDoc_Stage1(IFX_Pause* pPause) {
|
| m_dwFlags &= ~FPDFCREATE_INCREMENTAL;
|
| }
|
| CPDF_Dictionary* pDict = m_pDocument->GetRoot();
|
| - m_pMetadata = pDict ? pDict->GetDirectObjectBy("Metadata") : NULL;
|
| + m_pMetadata = pDict ? pDict->GetDirectObjectBy("Metadata") : nullptr;
|
| if (m_dwFlags & FPDFCREATE_OBJECTSTREAM) {
|
| m_pXRefStream.reset(new CPDF_XRefStream);
|
| m_pXRefStream->Start();
|
| @@ -1556,7 +1556,7 @@ int32_t CPDF_Creator::WriteDoc_Stage2(IFX_Pause* pPause) {
|
| m_iStage = 27;
|
| }
|
| if (m_iStage == 27) {
|
| - if (NULL != m_pEncryptDict && 0 == m_pEncryptDict->GetObjNum()) {
|
| + if (m_pEncryptDict && !m_pEncryptDict->GetObjNum()) {
|
| m_dwLastObjNum += 1;
|
| FX_FILESIZE saveOffset = m_Offset;
|
| if (WriteIndirectObj(m_dwLastObjNum, m_pEncryptDict) < 0) {
|
| @@ -1893,13 +1893,14 @@ int32_t CPDF_Creator::WriteDoc_Stage4(IFX_Pause* pPause) {
|
| m_File.Flush();
|
| return m_iStage = 100;
|
| }
|
| +
|
| void CPDF_Creator::Clear() {
|
| m_pXRefStream.reset();
|
| m_File.Clear();
|
| m_NewObjNumArray.RemoveAll();
|
| if (m_pIDArray) {
|
| m_pIDArray->Release();
|
| - m_pIDArray = NULL;
|
| + m_pIDArray = nullptr;
|
| }
|
| }
|
|
|
| @@ -1916,17 +1917,17 @@ bool CPDF_Creator::Create(uint32_t flags) {
|
| m_ObjectOffset.Clear();
|
| m_NewObjNumArray.RemoveAll();
|
| InitID();
|
| - if (flags & FPDFCREATE_PROGRESSIVE) {
|
| + if (flags & FPDFCREATE_PROGRESSIVE)
|
| return true;
|
| - }
|
| - return Continue(NULL) > -1;
|
| + return Continue(nullptr) > -1;
|
| }
|
| +
|
| void CPDF_Creator::InitID(FX_BOOL bDefault) {
|
| - CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : NULL;
|
| + CPDF_Array* pOldIDArray = m_pParser ? m_pParser->GetIDArray() : nullptr;
|
| FX_BOOL bNewId = !m_pIDArray;
|
| if (!m_pIDArray) {
|
| m_pIDArray = new CPDF_Array;
|
| - CPDF_Object* pID1 = pOldIDArray ? pOldIDArray->GetObjectAt(0) : NULL;
|
| + CPDF_Object* pID1 = pOldIDArray ? pOldIDArray->GetObjectAt(0) : nullptr;
|
| if (pID1) {
|
| m_pIDArray->Add(pID1->Clone());
|
| } else {
|
|
|