summaryrefslogtreecommitdiff
path: root/fpdfsdk/fpdf_sysfontinfo.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'fpdfsdk/fpdf_sysfontinfo.cpp')
-rw-r--r--fpdfsdk/fpdf_sysfontinfo.cpp20
1 files changed, 10 insertions, 10 deletions
diff --git a/fpdfsdk/fpdf_sysfontinfo.cpp b/fpdfsdk/fpdf_sysfontinfo.cpp
index 18b01341ee..9d05903a61 100644
--- a/fpdfsdk/fpdf_sysfontinfo.cpp
+++ b/fpdfsdk/fpdf_sysfontinfo.cpp
@@ -14,11 +14,9 @@
class CFX_ExternalFontInfo final : public IFX_SystemFontInfo {
public:
explicit CFX_ExternalFontInfo(FPDF_SYSFONTINFO* pInfo) : m_pInfo(pInfo) {}
-
- void Release() override {
+ ~CFX_ExternalFontInfo() override {
if (m_pInfo->Release)
m_pInfo->Release(m_pInfo);
- delete this;
}
FX_BOOL EnumFontList(CFX_FontMapper* pMapper) override {
@@ -83,8 +81,6 @@ class CFX_ExternalFontInfo final : public IFX_SystemFontInfo {
}
private:
- ~CFX_ExternalFontInfo() override {}
-
FPDF_SYSFONTINFO* const m_pInfo;
};
@@ -99,7 +95,8 @@ DLLEXPORT void STDCALL FPDF_SetSystemFontInfo(FPDF_SYSFONTINFO* pFontInfoExt) {
return;
CFX_GEModule::Get()->GetFontMgr()->SetSystemFontInfo(
- new CFX_ExternalFontInfo(pFontInfoExt));
+ std::unique_ptr<IFX_SystemFontInfo>(
+ new CFX_ExternalFontInfo(pFontInfoExt)));
}
DLLEXPORT const FPDF_CharsetFontMap* STDCALL FPDF_GetDefaultTTFMap() {
@@ -111,7 +108,9 @@ struct FPDF_SYSFONTINFO_DEFAULT : public FPDF_SYSFONTINFO {
};
static void DefaultRelease(struct _FPDF_SYSFONTINFO* pThis) {
- ((FPDF_SYSFONTINFO_DEFAULT*)pThis)->m_pFontInfo->Release();
+ auto* pDefault = static_cast<FPDF_SYSFONTINFO_DEFAULT*>(pThis);
+ // TODO(thestig): Should this be set to nullptr too?
+ delete pDefault->m_pFontInfo;
}
static void DefaultEnumFonts(struct _FPDF_SYSFONTINFO* pThis, void* pMapper) {
@@ -171,9 +170,10 @@ static void DefaultDeleteFont(struct _FPDF_SYSFONTINFO* pThis, void* hFont) {
}
DLLEXPORT FPDF_SYSFONTINFO* STDCALL FPDF_GetDefaultSystemFontInfo() {
- IFX_SystemFontInfo* pFontInfo = IFX_SystemFontInfo::CreateDefault(nullptr);
+ std::unique_ptr<IFX_SystemFontInfo> pFontInfo =
+ IFX_SystemFontInfo::CreateDefault(nullptr);
if (!pFontInfo)
- return NULL;
+ return nullptr;
FPDF_SYSFONTINFO_DEFAULT* pFontInfoExt =
FX_Alloc(FPDF_SYSFONTINFO_DEFAULT, 1);
@@ -186,6 +186,6 @@ DLLEXPORT FPDF_SYSFONTINFO* STDCALL FPDF_GetDefaultSystemFontInfo() {
pFontInfoExt->MapFont = DefaultMapFont;
pFontInfoExt->Release = DefaultRelease;
pFontInfoExt->version = 1;
- pFontInfoExt->m_pFontInfo = pFontInfo;
+ pFontInfoExt->m_pFontInfo = pFontInfo.release();
return pFontInfoExt;
}