Index: core/fpdfapi/edit/fpdf_edit_create.cpp |
diff --git a/core/fpdfapi/edit/fpdf_edit_create.cpp b/core/fpdfapi/edit/fpdf_edit_create.cpp |
index ff126063996203509d0bf1a58772b2bad0efb75c..360472948da52a9dc22a4dbebd7304350888741f 100644 |
--- a/core/fpdfapi/edit/fpdf_edit_create.cpp |
+++ b/core/fpdfapi/edit/fpdf_edit_create.cpp |
@@ -417,26 +417,24 @@ CPDF_FlateEncoder::CPDF_FlateEncoder(CPDF_Stream* pStream, bool bFlateEncode) |
m_bCloned(false), |
m_bNewData(false) { |
m_Acc.LoadAllData(pStream, true); |
- if ((pStream && pStream->GetDict() && |
- pStream->GetDict()->KeyExist("Filter")) || |
- !bFlateEncode) { |
- if (pStream->GetDict()->KeyExist("Filter") && !bFlateEncode) { |
- CPDF_StreamAcc destAcc; |
- destAcc.LoadAllData(pStream); |
- m_dwSize = destAcc.GetSize(); |
- m_pData = (uint8_t*)destAcc.DetachData(); |
- m_pDict = ToDictionary(pStream->GetDict()->Clone().release()); |
- m_pDict->RemoveFor("Filter"); |
- m_bNewData = true; |
- m_bCloned = true; |
- } else { |
- m_pData = (uint8_t*)m_Acc.GetData(); |
- m_dwSize = m_Acc.GetSize(); |
- m_pDict = pStream->GetDict(); |
- } |
+ bool bHasFilter = pStream && pStream->HasFilter(); |
+ if (bHasFilter && !bFlateEncode) { |
+ CPDF_StreamAcc destAcc; |
+ destAcc.LoadAllData(pStream); |
+ m_dwSize = destAcc.GetSize(); |
+ m_pData = (uint8_t*)destAcc.DetachData(); |
+ m_pDict = ToDictionary(pStream->GetDict()->Clone().release()); |
+ m_pDict->RemoveFor("Filter"); |
+ m_bNewData = true; |
+ m_bCloned = true; |
+ return; |
+ } |
+ if (bHasFilter || !bFlateEncode) { |
+ m_pData = (uint8_t*)m_Acc.GetData(); |
+ m_dwSize = m_Acc.GetSize(); |
+ m_pDict = pStream->GetDict(); |
return; |
} |
- |
m_bNewData = true; |
m_bCloned = true; |
// TODO(thestig): Move to Init() and check return value. |