Fix leaks in class CFGAS_FontMgrImp Two leak cases are addressed here: --In CFGAS_FontMgrImp::LoadFont(), calling LoadFace() is unnecessary since the following LoadFile() does the exact same thing. Calling LoadFace() without releasing the loaded face results in a leak; --|m_Hash2Fonts| in class CFGAS_FontMgrImp owns all the fonts stored in it. The fonts need to be deleted along with the container. BUG=pdfium:242 Review-Url: https://codereview.chromium.org/2322483003
diff --git a/xfa/fgas/font/fgas_stdfontmgr.cpp b/xfa/fgas/font/fgas_stdfontmgr.cpp index 7e5cfbb..a0e7e39 100644 --- a/xfa/fgas/font/fgas_stdfontmgr.cpp +++ b/xfa/fgas/font/fgas_stdfontmgr.cpp
@@ -591,6 +591,8 @@ uint32_t dwHash; CFX_ArrayTemplate<CFGAS_GEFont*>* pFonts; m_Hash2Fonts.GetNextAssoc(pos, dwHash, pFonts); + for (int32_t i = 0; i < pFonts->GetSize(); i++) + delete pFonts->GetAt(i); delete pFonts; } m_Hash2Fonts.RemoveAll(); @@ -845,11 +847,6 @@ if (!pFontStream) return nullptr; - if (!LoadFace(pFontStream, 0)) { - pFontStream->Release(); - return nullptr; - } - CFX_Font* pInternalFont = new CFX_Font(); if (!pInternalFont->LoadFile(pFontStream, iFaceIndex)) { pFontStream->Release();