| Index: core/fxcodec/codec/fx_codec_tiff.cpp
|
| diff --git a/core/fxcodec/codec/fx_codec_tiff.cpp b/core/fxcodec/codec/fx_codec_tiff.cpp
|
| index 8046f1cc39c50de0a7c8fd1717d9ee70e2dc99aa..be9c7d447f1d1f6b8e00651aebb8c87fecf1a043 100644
|
| --- a/core/fxcodec/codec/fx_codec_tiff.cpp
|
| +++ b/core/fxcodec/codec/fx_codec_tiff.cpp
|
| @@ -8,8 +8,10 @@
|
|
|
| #include "core/fxcodec/codec/codec_int.h"
|
| #include "core/fxcodec/fx_codec.h"
|
| +#include "core/fxcrt/cfx_retain_ptr.h"
|
| #include "core/fxcrt/fx_safe_types.h"
|
| #include "core/fxge/fx_dib.h"
|
| +#include "third_party/base/ptr_util.h"
|
|
|
| extern "C" {
|
| #include "third_party/libtiff/tiffiop.h"
|
| @@ -20,7 +22,7 @@ class CCodec_TiffContext {
|
| CCodec_TiffContext();
|
| ~CCodec_TiffContext();
|
|
|
| - bool InitDecoder(IFX_SeekableReadStream* file_ptr);
|
| + bool InitDecoder(const CFX_RetainPtr<IFX_SeekableReadStream>& file_ptr);
|
| bool LoadFrameInfo(int32_t frame,
|
| int32_t* width,
|
| int32_t* height,
|
| @@ -29,7 +31,7 @@ class CCodec_TiffContext {
|
| CFX_DIBAttribute* pAttribute);
|
| bool Decode(CFX_DIBitmap* pDIBitmap);
|
|
|
| - IFX_SeekableReadStream* io_in() const { return m_io_in; }
|
| + CFX_RetainPtr<IFX_SeekableReadStream> io_in() const { return m_io_in; }
|
| uint32_t offset() const { return m_offset; }
|
| void set_offset(uint32_t offset) { m_offset = offset; }
|
|
|
| @@ -52,7 +54,7 @@ class CCodec_TiffContext {
|
| uint16_t bps,
|
| uint16_t spp);
|
|
|
| - IFX_SeekableReadStream* m_io_in;
|
| + CFX_RetainPtr<IFX_SeekableReadStream> m_io_in;
|
| uint32_t m_offset;
|
| TIFF* m_tif_ctx;
|
| };
|
| @@ -215,7 +217,8 @@ CCodec_TiffContext::~CCodec_TiffContext() {
|
| TIFFClose(m_tif_ctx);
|
| }
|
|
|
| -bool CCodec_TiffContext::InitDecoder(IFX_SeekableReadStream* file_ptr) {
|
| +bool CCodec_TiffContext::InitDecoder(
|
| + const CFX_RetainPtr<IFX_SeekableReadStream>& file_ptr) {
|
| m_io_in = file_ptr;
|
| m_tif_ctx = tiff_open(this, "r");
|
| return !!m_tif_ctx;
|
| @@ -462,13 +465,12 @@ bool CCodec_TiffContext::Decode(CFX_DIBitmap* pDIBitmap) {
|
| }
|
|
|
| CCodec_TiffContext* CCodec_TiffModule::CreateDecoder(
|
| - IFX_SeekableReadStream* file_ptr) {
|
| - CCodec_TiffContext* pDecoder = new CCodec_TiffContext;
|
| - if (!pDecoder->InitDecoder(file_ptr)) {
|
| - delete pDecoder;
|
| + const CFX_RetainPtr<IFX_SeekableReadStream>& file_ptr) {
|
| + auto pDecoder = pdfium::MakeUnique<CCodec_TiffContext>();
|
| + if (!pDecoder->InitDecoder(file_ptr))
|
| return nullptr;
|
| - }
|
| - return pDecoder;
|
| +
|
| + return pDecoder.release();
|
| }
|
|
|
| bool CCodec_TiffModule::LoadFrameInfo(CCodec_TiffContext* ctx,
|
|
|