diff options
-rw-r--r-- | core/fpdfapi/parser/cpdf_object_stream.cpp | 3 | ||||
-rw-r--r-- | core/fxcrt/cfx_memorystream.cpp | 22 | ||||
-rw-r--r-- | core/fxcrt/cfx_memorystream.h | 5 | ||||
-rw-r--r-- | xfa/fgas/font/cfgas_fontmgr.cpp | 5 |
4 files changed, 13 insertions, 22 deletions
diff --git a/core/fpdfapi/parser/cpdf_object_stream.cpp b/core/fpdfapi/parser/cpdf_object_stream.cpp index a85cbf1ffa..d6b3d365f6 100644 --- a/core/fpdfapi/parser/cpdf_object_stream.cpp +++ b/core/fpdfapi/parser/cpdf_object_stream.cpp @@ -97,8 +97,7 @@ void CPDF_ObjectStream::Init(const CPDF_Stream* stream) { stream_acc->LoadAllDataFiltered(); const uint32_t data_size = stream_acc->GetSize(); data_stream_ = pdfium::MakeRetain<CFX_MemoryStream>( - stream_acc->DetachData().release(), static_cast<size_t>(data_size), - true); + stream_acc->DetachData().release(), data_size); } CPDF_SyntaxParser syntax(data_stream_); diff --git a/core/fxcrt/cfx_memorystream.cpp b/core/fxcrt/cfx_memorystream.cpp index 15cde78f42..b0a0bd91d1 100644 --- a/core/fxcrt/cfx_memorystream.cpp +++ b/core/fxcrt/cfx_memorystream.cpp @@ -17,26 +17,16 @@ constexpr size_t kBlockSize = 64 * 1024; } // namespace CFX_MemoryStream::CFX_MemoryStream(bool bConsecutive) - : m_nTotalSize(0), - m_nCurSize(0), - m_bConsecutive(bConsecutive), - m_bTakeOver(true) {} - -CFX_MemoryStream::CFX_MemoryStream(uint8_t* pBuffer, - size_t nSize, - bool bTakeOver) - : m_nTotalSize(nSize), - m_nCurSize(nSize), - m_bConsecutive(true), - m_bTakeOver(bTakeOver) { + : m_nTotalSize(0), m_nCurSize(0), m_bConsecutive(bConsecutive) {} + +CFX_MemoryStream::CFX_MemoryStream(uint8_t* pBuffer, size_t nSize) + : m_nTotalSize(nSize), m_nCurSize(nSize), m_bConsecutive(true) { m_Blocks.push_back(pBuffer); } CFX_MemoryStream::~CFX_MemoryStream() { - if (m_bTakeOver) { - for (uint8_t* pBlock : m_Blocks) - FX_Free(pBlock); - } + for (uint8_t* pBlock : m_Blocks) + FX_Free(pBlock); } FX_FILESIZE CFX_MemoryStream::GetSize() { diff --git a/core/fxcrt/cfx_memorystream.h b/core/fxcrt/cfx_memorystream.h index cd89c629fc..95f62b6a2c 100644 --- a/core/fxcrt/cfx_memorystream.h +++ b/core/fxcrt/cfx_memorystream.h @@ -32,7 +32,9 @@ class CFX_MemoryStream : public IFX_SeekableStream { private: explicit CFX_MemoryStream(bool bConsecutive); - CFX_MemoryStream(uint8_t* pBuffer, size_t nSize, bool bTakeOver); + + // Takes ownership of |pBuffer|. + CFX_MemoryStream(uint8_t* pBuffer, size_t nSize); ~CFX_MemoryStream() override; bool ExpandBlocks(size_t size); @@ -42,7 +44,6 @@ class CFX_MemoryStream : public IFX_SeekableStream { size_t m_nCurSize; size_t m_nCurPos = 0; const bool m_bConsecutive; - const bool m_bTakeOver; // Owns the data in |m_Blocks|. }; #endif // CORE_FXCRT_CFX_MEMORYSTREAM_H_ diff --git a/xfa/fgas/font/cfgas_fontmgr.cpp b/xfa/fgas/font/cfgas_fontmgr.cpp index f173bf24ae..f6b168c89d 100644 --- a/xfa/fgas/font/cfgas_fontmgr.cpp +++ b/xfa/fgas/font/cfgas_fontmgr.cpp @@ -179,7 +179,8 @@ const FX_FONTDESCRIPTOR* CFGAS_FontMgr::FindFont(const wchar_t* pszFontFamily, // Use a named object to store the returned value of EnumGdiFonts() instead // of using a temporary object. This can prevent use-after-free issues since // pDesc may point to one of std::deque object's elements. - std::deque<FX_FONTDESCRIPTOR> namedFonts = EnumGdiFonts(pszFontFamily, wUnicode); + std::deque<FX_FONTDESCRIPTOR> namedFonts = + EnumGdiFonts(pszFontFamily, wUnicode); params.pwsFamily = nullptr; pDesc = MatchDefaultFont(¶ms, namedFonts); if (!pDesc) @@ -628,7 +629,7 @@ RetainPtr<IFX_SeekableReadStream> CFGAS_FontMgr::CreateFontStream( uint8_t* pBuffer = FX_Alloc(uint8_t, dwFileSize + 1); dwFileSize = pSystemFontInfo->GetFontData(hFont, 0, pBuffer, dwFileSize); - return pdfium::MakeRetain<CFX_MemoryStream>(pBuffer, dwFileSize, true); + return pdfium::MakeRetain<CFX_MemoryStream>(pBuffer, dwFileSize); } RetainPtr<IFX_SeekableReadStream> CFGAS_FontMgr::CreateFontStream( |