Index: core/fxcrt/fx_extension.cpp |
diff --git a/core/fxcrt/fx_extension.cpp b/core/fxcrt/fx_extension.cpp |
index 1dddf09fd677a2a581ceab77d253846a3831fc5b..197022362fcc408dca6ce6e6e1c79a6c720d0f17 100644 |
--- a/core/fxcrt/fx_extension.cpp |
+++ b/core/fxcrt/fx_extension.cpp |
@@ -4,6 +4,8 @@ |
// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
+#include <utility> |
+ |
#include "core/fxcrt/extension.h" |
#include "core/fxcrt/include/fx_basic.h" |
#include "core/fxcrt/include/fx_ext.h" |
@@ -14,14 +16,10 @@ |
#include <ctime> |
#endif |
-CFX_CRTFileStream::CFX_CRTFileStream(IFXCRT_FileAccess* pFA) |
- : m_pFile(pFA), m_dwCount(1) {} |
+CFX_CRTFileStream::CFX_CRTFileStream(std::unique_ptr<IFXCRT_FileAccess> pFA) |
+ : m_pFile(std::move(pFA)), m_dwCount(1) {} |
-CFX_CRTFileStream::~CFX_CRTFileStream() { |
- if (m_pFile) { |
- m_pFile->Release(); |
- } |
-} |
+CFX_CRTFileStream::~CFX_CRTFileStream() {} |
IFX_FileStream* CFX_CRTFileStream::Retain() { |
m_dwCount++; |
@@ -83,27 +81,18 @@ IFX_FileAccess* FX_CreateDefaultFileAccess(const CFX_WideStringC& wsPath) { |
#endif // PDF_ENABLE_XFA |
IFX_FileStream* FX_CreateFileStream(const FX_CHAR* filename, uint32_t dwModes) { |
- IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create(); |
- if (!pFA) { |
- return NULL; |
- } |
- if (!pFA->Open(filename, dwModes)) { |
- pFA->Release(); |
- return NULL; |
- } |
- return new CFX_CRTFileStream(pFA); |
+ std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create()); |
+ if (!pFA->Open(filename, dwModes)) |
+ return nullptr; |
+ return new CFX_CRTFileStream(std::move(pFA)); |
} |
+ |
IFX_FileStream* FX_CreateFileStream(const FX_WCHAR* filename, |
uint32_t dwModes) { |
- IFXCRT_FileAccess* pFA = FXCRT_FileAccess_Create(); |
- if (!pFA) { |
- return NULL; |
- } |
- if (!pFA->Open(filename, dwModes)) { |
- pFA->Release(); |
- return NULL; |
- } |
- return new CFX_CRTFileStream(pFA); |
+ std::unique_ptr<IFXCRT_FileAccess> pFA(IFXCRT_FileAccess::Create()); |
+ if (!pFA->Open(filename, dwModes)) |
+ return nullptr; |
+ return new CFX_CRTFileStream(std::move(pFA)); |
} |
IFX_FileRead* FX_CreateFileRead(const FX_CHAR* filename) { |
return FX_CreateFileStream(filename, FX_FILEMODE_ReadOnly); |