 Chromium Code Reviews
 Chromium Code Reviews Issue 2562563002:
  Properly ref count IFX_FileAccess.  (Closed)
    
  
    Issue 2562563002:
  Properly ref count IFX_FileAccess.  (Closed) 
  | 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; | 
| } |