Index: xfa/fgas/font/cfgas_fontmgr.cpp |
diff --git a/xfa/fgas/font/cfgas_fontmgr.cpp b/xfa/fgas/font/cfgas_fontmgr.cpp |
index 060dd95b48aff8aade8d7c94a1bd5d65d3844cf3..d7e7e8ed84a138a33cea7ab6f1ecacfdbca26991 100644 |
--- a/xfa/fgas/font/cfgas_fontmgr.cpp |
+++ b/xfa/fgas/font/cfgas_fontmgr.cpp |
@@ -566,10 +566,12 @@ FX_POSITION CFX_FontSourceEnum_File::GetStartPosition() { |
return (FX_POSITION)-1; |
} |
-IFX_FileAccess* CFX_FontSourceEnum_File::GetNext(FX_POSITION& pos) { |
- IFX_FileAccess* pAccess = IFX_FileAccess::CreateDefault(m_wsNext.AsStringC()); |
+CFX_RetainPtr<IFX_FileAccess> CFX_FontSourceEnum_File::GetNext( |
+ FX_POSITION& pos) { |
dsinclair
2016/12/07 23:05:03
Can this be a * instead of an &?
Tom Sepez
2016/12/07 23:26:55
It could, but this goes far beyond this -- the FX
|
+ CFX_RetainPtr<IFX_FileAccess> pAccess = |
+ IFX_FileAccess::CreateDefault(m_wsNext.AsStringC()); |
m_wsNext = GetNextFile().UTF8Decode(); |
- pos = m_wsNext.GetLength() != 0 ? pAccess : nullptr; |
+ pos = m_wsNext.GetLength() != 0 ? pAccess.Get() : nullptr; |
return pAccess; |
} |
@@ -636,17 +638,12 @@ bool CFGAS_FontMgr::EnumFontsFromFontMapper() { |
bool CFGAS_FontMgr::EnumFontsFromFiles() { |
CFX_GEModule::Get()->GetFontMgr()->InitFTLibrary(); |
FX_POSITION pos = m_pFontSource->GetStartPosition(); |
- IFX_FileAccess* pFontSource = nullptr; |
- CFX_RetainPtr<IFX_SeekableReadStream> pFontStream; |
while (pos) { |
- pFontSource = m_pFontSource->GetNext(pos); |
- pFontStream = pFontSource->CreateFileStream(FX_FILEMODE_ReadOnly); |
- if (!pFontStream) { |
- pFontSource->Release(); |
- continue; |
- } |
- RegisterFaces(pFontStream, nullptr); |
- pFontSource->Release(); |
+ CFX_RetainPtr<IFX_FileAccess> pFontSource = m_pFontSource->GetNext(pos); |
+ CFX_RetainPtr<IFX_SeekableReadStream> pFontStream = |
+ pFontSource->CreateFileStream(FX_FILEMODE_ReadOnly); |
+ if (pFontStream) |
+ RegisterFaces(pFontStream, nullptr); |
} |
return m_InstalledFonts.GetSize() != 0; |
} |