Author: dquintana
Date: Tue Oct 21 12:24:15 2014
New Revision: 64864

URL: http://svn.reactos.org/svn/reactos?rev=64864&view=rev
Log:
[EXPLORER-NEW]
* Cleanup in case of error. CID 1248426

[RSHELL]
* Add uninitialized class fields. CID 1248477
* Avoid leaking memory. CID 1248438

[BROWSEUI]
* Fix potential overwriting of a variable. CID 716363
* Save the rshell handle instead of loading it every time. CID 1248435
* Fix leaked PIDL. CID 1248418 

[SHELL32]
* Fix GCC build. And one small nickpick that has been bothering me for a long 
time.

Modified:
    branches/shell-experiments/base/shell/explorer-new/shellservice.c
    branches/shell-experiments/base/shell/rshell/CMenuDeskBar.cpp
    branches/shell-experiments/base/shell/rshell/CMenuToolbars.cpp
    branches/shell-experiments/dll/win32/browseui/bandsite.cpp
    branches/shell-experiments/dll/win32/browseui/internettoolbar.cpp
    branches/shell-experiments/dll/win32/browseui/shellbrowser.cpp
    branches/shell-experiments/dll/win32/shell32/shlview.cpp

Modified: branches/shell-experiments/base/shell/explorer-new/shellservice.c
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/base/shell/explorer-new/shellservice.c?rev=64864&r1=64863&r2=64864&view=diff
==============================================================================
--- branches/shell-experiments/base/shell/explorer-new/shellservice.c   
[iso-8859-1] (original)
+++ branches/shell-experiments/base/shell/explorer-new/shellservice.c   
[iso-8859-1] Tue Oct 21 12:24:15 2014
@@ -61,7 +61,7 @@
     HRESULT hr = S_OK;
     int     count = 0;
 
-    hdpa = DPA_Create(5);
+    *phdpa = NULL;
 
     TRACE("Enumerating Shell Service Ojbect GUIDs...\n");
 
@@ -72,6 +72,8 @@
         ERR("RegOpenKey failed.\n");
         return HRESULT_FROM_WIN32(GetLastError());
     }
+
+    hdpa = DPA_Create(5);
 
     /* Enumerate */
     do

Modified: branches/shell-experiments/base/shell/rshell/CMenuDeskBar.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/base/shell/rshell/CMenuDeskBar.cpp?rev=64864&r1=64863&r2=64864&view=diff
==============================================================================
--- branches/shell-experiments/base/shell/rshell/CMenuDeskBar.cpp       
[iso-8859-1] (original)
+++ branches/shell-experiments/base/shell/rshell/CMenuDeskBar.cpp       
[iso-8859-1] Tue Oct 21 12:24:15 2014
@@ -35,8 +35,11 @@
 
 CMenuDeskBar::CMenuDeskBar() :
     m_Client(NULL),
+    m_ClientWindow(NULL),
+    m_IconSize(0),
     m_Banner(NULL),
-    m_Shown(FALSE)
+    m_Shown(FALSE),
+    m_ShowFlags(0)
 {
 }
 

Modified: branches/shell-experiments/base/shell/rshell/CMenuToolbars.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/base/shell/rshell/CMenuToolbars.cpp?rev=64864&r1=64863&r2=64864&view=diff
==============================================================================
--- branches/shell-experiments/base/shell/rshell/CMenuToolbars.cpp      
[iso-8859-1] (original)
+++ branches/shell-experiments/base/shell/rshell/CMenuToolbars.cpp      
[iso-8859-1] Tue Oct 21 12:24:15 2014
@@ -1191,7 +1191,10 @@
 
             HRESULT hr = m_menuBand->_CallCBWithItemId(info.wID, SMC_GETINFO, 
0, reinterpret_cast<LPARAM>(sminfo));
             if (FAILED_UNEXPECTEDLY(hr))
+            {
+                delete sminfo;
                 return hr;
+            }
 
             AddButton(info.wID, info.dwTypeData, info.hSubMenu != NULL, 
sminfo->iIcon, reinterpret_cast<DWORD_PTR>(sminfo), last);
 

Modified: branches/shell-experiments/dll/win32/browseui/bandsite.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/browseui/bandsite.cpp?rev=64864&r1=64863&r2=64864&view=diff
==============================================================================
--- branches/shell-experiments/dll/win32/browseui/bandsite.cpp  [iso-8859-1] 
(original)
+++ branches/shell-experiments/dll/win32/browseui/bandsite.cpp  [iso-8859-1] 
Tue Oct 21 12:24:15 2014
@@ -337,7 +337,6 @@
         /* Initialize the added bands */
         memset(&NewBand[fBandsAllocated], 0, (NewAllocated - fBandsAllocated) 
* sizeof(struct BandObject));
 
-        NewBand = &fBands[fBandsAllocated];
         fBandsAllocated = NewAllocated;
         CoTaskMemFree(fBands);
         fBands = NewBand;

Modified: branches/shell-experiments/dll/win32/browseui/internettoolbar.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/browseui/internettoolbar.cpp?rev=64864&r1=64863&r2=64864&view=diff
==============================================================================
--- branches/shell-experiments/dll/win32/browseui/internettoolbar.cpp   
[iso-8859-1] (original)
+++ branches/shell-experiments/dll/win32/browseui/internettoolbar.cpp   
[iso-8859-1] Tue Oct 21 12:24:15 2014
@@ -30,6 +30,7 @@
 #define GET_Y_LPARAM(lp) ((int)(short)HIWORD(lp))
 
 #define USE_CUSTOM_MENUBAND 1
+HMODULE g_hRShell = NULL;
 
 #if 1
 // TODO: declare these GUIDs and interfaces in the right place (whatever that 
may be)
@@ -729,13 +730,13 @@
 
     hResult = E_FAIL;
 #if USE_CUSTOM_MENUBAND
-    HMODULE hrs = GetModuleHandleW(L"rshell.dll");
+    if (!g_hRShell) g_hRShell = GetModuleHandleW(L"rshell.dll");
     
-    if (!hrs) hrs = LoadLibraryW(L"rshell.dll");
-
-    if (hrs)
-    {
-        PMENUBAND_CONSTRUCTOR func = (PMENUBAND_CONSTRUCTOR) 
GetProcAddress(hrs, "CMenuBand_Constructor");
+    if (!g_hRShell) g_hRShell = LoadLibraryW(L"rshell.dll");
+
+    if (g_hRShell)
+    {
+        PMENUBAND_CONSTRUCTOR func = (PMENUBAND_CONSTRUCTOR) 
GetProcAddress(g_hRShell, "CMenuBand_Constructor");
         if (func)
         {
             hResult = func(IID_PPV_ARG(IShellMenu, &menubar));

Modified: branches/shell-experiments/dll/win32/browseui/shellbrowser.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/browseui/shellbrowser.cpp?rev=64864&r1=64863&r2=64864&view=diff
==============================================================================
--- branches/shell-experiments/dll/win32/browseui/shellbrowser.cpp      
[iso-8859-1] (original)
+++ branches/shell-experiments/dll/win32/browseui/shellbrowser.cpp      
[iso-8859-1] Tue Oct 21 12:24:15 2014
@@ -897,28 +897,32 @@
     LPWSTR pszBuf, UINT cchBuf, SFGAOF *rgfInOut)
 {
     CComPtr<IShellFolder>                   parentFolder;
-    LPITEMIDLIST                            childPIDL;
+    LPITEMIDLIST                            childPIDL = NULL;
     STRRET                                  L108;
     HRESULT                                 hResult;
 
     hResult = SHBindToFolderIDListParent(NULL, pidl, 
&IID_PPV_ARG(IShellFolder, &parentFolder), &childPIDL);
     if (FAILED(hResult))
-        return hResult;
+        goto cleanup;
 
     hResult = parentFolder->GetDisplayNameOf(childPIDL, uFlags, &L108);
     if (FAILED(hResult))
-        return hResult;
+        goto cleanup;
 
     StrRetToBufW(&L108, childPIDL, pszBuf, cchBuf);
     if (rgfInOut)
     {
         hResult = parentFolder->GetAttributesOf(1, const_cast<LPCITEMIDLIST 
*>(&childPIDL), rgfInOut);
         if (FAILED(hResult))
-            return hResult;
-    }
-
-    ILFree(childPIDL);
-    return S_OK;
+            goto cleanup;
+    }
+
+    hResult = S_OK;
+
+cleanup:
+    if (childPIDL)
+        ILFree(childPIDL);
+    return hResult;
 }
 
 long IEGetNameAndFlags(LPITEMIDLIST pidl, SHGDNF uFlags, LPWSTR pszBuf, UINT 
cchBuf, SFGAOF *rgfInOut)

Modified: branches/shell-experiments/dll/win32/shell32/shlview.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/shell32/shlview.cpp?rev=64864&r1=64863&r2=64864&view=diff
==============================================================================
--- branches/shell-experiments/dll/win32/shell32/shlview.cpp    [iso-8859-1] 
(original)
+++ branches/shell-experiments/dll/win32/shell32/shlview.cpp    [iso-8859-1] 
Tue Oct 21 12:24:15 2014
@@ -59,7 +59,8 @@
 static const WCHAR SV_CLASS_NAME[] = {'S', 'H', 'E', 'L', 'L', 'D', 'L', 'L', 
'_', 'D', 'e', 'f', 'V', 'i', 'e', 'w', 0};
 
 typedef struct
-{   BOOL    bIsAscending;
+{
+    BOOL    bIsAscending;
     INT     nHeaderID;
     INT     nLastHeaderID;
 } LISTVIEW_SORT_INFO, *LPLISTVIEW_SORT_INFO;
@@ -358,10 +359,10 @@
     m_isEditing(FALSE),
     m_hView(NULL)
 {
-    m_FolderSettings = { 0 };
-    m_sortInfo = { 0 };
-    m_ptLastMousePos = { 0 };
-    m_Category = { 0 };
+    ZeroMemory(&m_FolderSettings, sizeof(m_FolderSettings));
+    ZeroMemory(&m_sortInfo, sizeof(m_sortInfo));
+    ZeroMemory(&m_ptLastMousePos, sizeof(m_ptLastMousePos));
+    ZeroMemory(&m_Category, sizeof(m_Category));
 }
 
 CDefView::~CDefView()


Reply via email to