Fixed a few memory leaks.
authorJames Hawkins <truiken@gmail.com>
Tue, 30 Nov 2004 17:33:27 +0000 (17:33 +0000)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 30 Nov 2004 17:33:27 +0000 (17:33 +0000)
dlls/advapi32/crypt.c
dlls/advapi32/tests/crypt.c
dlls/avifil32/avifile.c
dlls/comctl32/imagelist.c

index bd5257e630a0a0ca21b675d2cb8fda44d420caf6..adc739f4e60b615d4c803e88631eab27d88083aa 100644 (file)
@@ -396,6 +396,7 @@ BOOL WINAPI CryptAcquireContextA (HCRYPTPROV *phProv, LPCSTR pszContainer,
                if ( r != ERROR_SUCCESS )
                {
                        TRACE("error %ld reading 'Signature'\n", r );
+                       CRYPT_Free(signature);
                        RegCloseKey(key);
                        SetLastError(NTE_PROV_TYPE_ENTRY_BAD);
                        goto error;
index a4b8cd8bf7d7fdbf256035b13c8051a83d3992b7..8aec3af2e2a4e9276cab29af6fee785b13b56985 100644 (file)
@@ -227,6 +227,8 @@ static void test_enum_providers(void)
        ok(result && !strcmp(pszProvName, provider), "expected %s, got %s\n", pszProvName, provider);
        ok(result && cbName==providerLen, "expected %ld, got %ld\n", 
                cbName, providerLen);
+
+       LocalFree(provider);
 }
 
 static BOOL FindProvTypesRegVals(DWORD dwIndex, DWORD *pdwProvType, LPSTR *pszTypeName, 
@@ -354,6 +356,8 @@ static void test_enum_provider_types()
        if (pszTypeName)
            ok(!strcmp(pszTypeName, typeName), "expected %s, got %s\n", pszTypeName, typeName);
        ok(typeNameSize==cbTypeName, "expected %ld, got %ld\n", cbTypeName, typeNameSize);
+       
+       LocalFree(typeName);
 }
 
 static BOOL FindDfltProvRegVals(DWORD dwProvType, DWORD dwFlags, LPSTR *pszProvName, DWORD *pcbProvName)
@@ -470,6 +474,8 @@ static void test_get_default_provider()
        result = CryptGetDefaultProvider(provType, NULL, flags, provName, &provNameSize);
        ok(result && !strcmp(pszProvName, provName), "expected %s, got %s\n", pszProvName, provName);
        ok(result && provNameSize==cbProvName, "expected %ld, got %ld\n", cbProvName, provNameSize);
+
+       LocalFree(provName);
 }
 
 static void test_set_provider_ex()
@@ -501,6 +507,8 @@ static void test_set_provider_ex()
        result = CryptGetDefaultProvider(PROV_RSA_FULL, NULL, CRYPT_MACHINE_DEFAULT, pszProvName, &cbProvName);
        ok(result && !strcmp(MS_DEF_PROV, pszProvName), "expected %s, got %s\n", MS_DEF_PROV, pszProvName);
        ok(result && cbProvName==(strlen(MS_DEF_PROV) + 1), "expected %i, got %ld\n", (strlen(MS_DEF_PROV) + 1), cbProvName);
+
+       LocalFree(pszProvName);
 }
 
 START_TEST(crypt)
index d1acd65a6b52dd5ad13b39929403e96628d01c3a..03de45bb7b29ce769ee31e85353caa58436107f0 100644 (file)
@@ -1802,7 +1802,10 @@ static HRESULT AVIFILE_LoadFile(IAVIFileImpl *This)
              return AVIERR_MEMORY;
 
            if (mmioRead(This->hmmio, (HPSTR)str, ck.cksize) != ck.cksize)
+           {
+             LocalFree((HLOCAL)str);
              return AVIERR_FILEREAD;
+           }
 
            MultiByteToWideChar(CP_ACP, 0, str, -1, pStream->sInfo.szName,
                                sizeof(pStream->sInfo.szName)/sizeof(pStream->sInfo.szName[0]));
index 6eb2a99ab9b910886ecd03f2fa61e187feedb0ae..b586c7a574cb4e084cefd25124babe82f9b26dd2 100644 (file)
@@ -2731,6 +2731,7 @@ _write_bitmap(HBITMAP hBitmap, LPSTREAM pstm, int cx, int cy)
     failed:
     ReleaseDC(0, xdc);
     LocalFree((HLOCAL)lpBitsOrg);
+    LocalFree((HLOCAL)data);
 
     return result;
 }