Author: dquintana
Date: Thu Mar 13 16:21:56 2014
New Revision: 62492

URL: http://svn.reactos.org/svn/reactos?rev=62492&view=rev
Log:
[RSHELL]
* Fix some null dereferences.
* Fix positioning of submenus of an horizontal menu toolbar.

[BROWSEUI]
* Fix some null dereferences.

CORE-7586

Modified:
    branches/shell-experiments/base/shell/rshell/CMenuDeskBar.cpp
    branches/shell-experiments/base/shell/rshell/CMenuToolbars.cpp
    branches/shell-experiments/dll/win32/browseui/addressband.cpp

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=62492&r1=62491&r2=62492&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] Thu Mar 13 16:21:56 2014
@@ -345,8 +345,6 @@
         y = rcWorkArea.bottom - cy;
     }
 
-
-
     this->SetWindowPos(HWND_TOPMOST, x, y, cx, cy, SWP_SHOWWINDOW);
 
     m_ShowFlags = dwFlags;

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=62492&r1=62491&r2=62492&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] Thu Mar 13 16:21:56 2014
@@ -492,8 +492,14 @@
     ClientToScreen(m_hwnd, &c);
     ClientToScreen(m_hwnd, &d);
 
-    POINTL pt = { b.x - 3, a.y - 3 };
+    POINTL pt = { a.x, b.y };
     RECTL rcl = { c.x, c.y, d.x, d.y };
+
+    if(m_toolbarFlags & SMINIT_VERTICAL)
+    {
+        pt.x = b.x - 3;
+        pt.y = a.y - 3;
+    }
 
 #if USE_SYSTEM_MENUSITE
     hr = CoCreateInstance(CLSID_MenuBandSite,
@@ -830,13 +836,16 @@
 }
 
 HRESULT  CMenuStaticToolbar::GetMenu(
-    HMENU *phmenu,
-    HWND *phwnd,
-    DWORD *pdwFlags)
-{
-    *phmenu = m_hmenu;
-    *phwnd = NULL;
-    *pdwFlags = m_dwMenuFlags;
+    _Out_opt_ HMENU *phmenu,
+    _Out_opt_ HWND *phwnd,
+    _Out_opt_ DWORD *pdwFlags)
+{
+    if (phmenu)
+        *phmenu = m_hmenu;
+    if (phwnd)
+        *phwnd = NULL;
+    if (pdwFlags)
+        *pdwFlags = m_dwMenuFlags;
 
     return S_OK;
 }
@@ -977,7 +986,9 @@
 
 CMenuSFToolbar::CMenuSFToolbar(CMenuBand * menuBand) :
     CMenuToolbarBase(menuBand, TRUE),
-    m_shellFolder(NULL)
+    m_shellFolder(NULL),
+    m_idList(NULL),
+    m_hKey(NULL)
 {
 }
 
@@ -1049,7 +1060,7 @@
 HRESULT CMenuSFToolbar::SetShellFolder(IShellFolder *psf, LPCITEMIDLIST 
pidlFolder, HKEY hKey, DWORD dwFlags)
 {
     m_shellFolder = psf;
-    m_idList = pidlFolder;
+    m_idList = ILClone(pidlFolder);
     m_hKey = hKey;
     m_dwMenuFlags = dwFlags;
     return S_OK;

Modified: branches/shell-experiments/dll/win32/browseui/addressband.cpp
URL: 
http://svn.reactos.org/svn/reactos/branches/shell-experiments/dll/win32/browseui/addressband.cpp?rev=62492&r1=62491&r2=62492&view=diff
==============================================================================
--- branches/shell-experiments/dll/win32/browseui/addressband.cpp       
[iso-8859-1] (original)
+++ branches/shell-experiments/dll/win32/browseui/addressband.cpp       
[iso-8859-1] Thu Mar 13 16:21:56 2014
@@ -311,10 +311,14 @@
     CComPtr<IWinEventHandler>               winEventHandler;
     HRESULT                                 hResult;
 
-    hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, 
reinterpret_cast<void **>(&winEventHandler));
-    if (FAILED(hResult))
-        return hResult;
-    return winEventHandler->IsWindowOwner(hWnd);
+    if (fAddressEditBox)
+    {
+        hResult = fAddressEditBox->QueryInterface(IID_IWinEventHandler, 
reinterpret_cast<void **>(&winEventHandler));
+        if (FAILED(hResult))
+            return hResult;
+        return winEventHandler->IsWindowOwner(hWnd);
+    }
+    return S_FALSE;
 }
 
 HRESULT STDMETHODCALLTYPE CAddressBand::FileSysChange(long param8, long paramC)


Reply via email to