OSDN Git Service

ExConverter.cpp: Fix memory leak
authorsdottaka <sdottaka@users.sourceforge.net>
Sun, 24 May 2015 06:23:33 +0000 (15:23 +0900)
committersdottaka <sdottaka@users.sourceforge.net>
Sun, 24 May 2015 06:23:33 +0000 (15:23 +0900)
--HG--
branch : stable

Src/Common/ExConverter.cpp

index f4c1fe7..0db11d6 100644 (file)
@@ -223,14 +223,12 @@ public:
        int enumCodePages(CodePageInfo *cpinfo, int count)
        {
                IEnumCodePage *pEnumCodePage = NULL;
-               PMIMECPINFO pcpInfo;
                ULONG ccpInfo;
                HRESULT hr = m_pmlang->EnumCodePages(MIMECONTF_SAVABLE_BROWSER | MIMECONTF_VALID | MIMECONTF_VALID_NLS, 0, &pEnumCodePage);
                if (FAILED(hr))
                        return 0;
-               pcpInfo = (PMIMECPINFO)CoTaskMemAlloc(sizeof(MIMECPINFO) * count);
-               pEnumCodePage->Next(count, pcpInfo, &ccpInfo);
-               CoTaskMemRealloc((void*)pcpInfo, sizeof(MIMECPINFO)*ccpInfo);
+               std::unique_ptr<MIMECPINFO[]> pcpInfo(new MIMECPINFO[count]);
+               pEnumCodePage->Next(count, pcpInfo.get(), &ccpInfo);
 
                for (int i = 0; i < (int)ccpInfo; i++)
                {