James Hawkins wrote:
On 5/12/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:

--- wine-0.9.37-orig/dlls/shell32/folders.c 2007-05-12 22:53:06.000000000 +0000 +++ wine-0.9.37/dlls/shell32/folders.c 2007-05-13 00:17:00.000000000 +0000
@@ -81,11 +81,15 @@ IExtractIconW* IExtractIconW_Constructor
        TRACE("%p\n", pidl);

        ei = HeapAlloc(GetProcessHeap(),0,sizeof(IExtractIconWImpl));
-       ei->ref=1;
-       ei->lpVtbl = &eivt;
-       ei->lpvtblPersistFile = &pfvt;
-       ei->lpvtblExtractIconA = &eiavt;
-       ei->pidl=ILClone(pidl);
+
+       if (ei)
+       {
+         ei->ref=1;
+         ei->lpVtbl = &eivt;
+         ei->lpvtblPersistFile = &pfvt;
+         ei->lpvtblExtractIconA = &eiavt;
+         ei->pidl=ILClone(pidl);
+       }


If a HeapAlloc call fails, you need to return with the appropriate error.


It is already done in ISF_ControlPanel_fnGetUIObjectOf(), IShellFolder_fnGetUIObjectOf(), ISF_Desktop_fnGetUIObjectOf(), ISF_MyComputer_fnGetUIObjectOf().

...
pObj = (LPUNKNOWN) IExtractIconW_Constructor(pidl);
...
if (SUCCEEDED(hr) && !pObj)
    hr = E_OUTOFMEMORY;
...
return hr;


Reply via email to