summaryrefslogtreecommitdiff
path: root/fpdfsdk/src/fpdfsave.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/src/fpdfsave.cpp')
-rw-r--r--fpdfsdk/src/fpdfsave.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/fpdfsdk/src/fpdfsave.cpp b/fpdfsdk/src/fpdfsave.cpp
index 54c9253d2e..36553092ee 100644
--- a/fpdfsdk/src/fpdfsave.cpp
+++ b/fpdfsdk/src/fpdfsave.cpp
@@ -18,10 +18,12 @@ class CFX_IFileWrite final : public IFX_StreamWrite {
public:
CFX_IFileWrite();
FX_BOOL Init(FPDF_FILEWRITE* pFileWriteStruct);
- virtual FX_BOOL WriteBlock(const void* pData, size_t size) override;
- virtual void Release() override {}
+ FX_BOOL WriteBlock(const void* pData, size_t size) override;
+ void Release() override;
protected:
+ ~CFX_IFileWrite() override {}
+
FPDF_FILEWRITE* m_pFileWriteStruct;
};
@@ -45,6 +47,10 @@ FX_BOOL CFX_IFileWrite::WriteBlock(const void* pData, size_t size) {
return TRUE;
}
+void CFX_IFileWrite::Release() {
+ delete this;
+}
+
FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,
FPDF_FILEWRITE* pFileWrite,
FPDF_DWORD flags,
@@ -70,7 +76,7 @@ FPDF_BOOL _FPDF_Doc_Save(FPDF_DOCUMENT document,
pStreamWrite = new CFX_IFileWrite;
pStreamWrite->Init(pFileWrite);
bRet = FileMaker.Create(pStreamWrite, flags);
- delete pStreamWrite;
+ pStreamWrite->Release();
return bRet;
}