[SHELL32] CCopyToMenu/CMoveToMenu: Check if this_ is NULL
[reactos.git] / dll / win32 / shell32 / CMoveToMenu.cpp
index 7e74473..c0e1c83 100644 (file)
@@ -100,6 +100,9 @@ BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
         }
         case BFFM_SELCHANGED:
         {
+            if (!this_)
+                break;
+
             WCHAR szPath[MAX_PATH];
             LPCITEMIDLIST pidl = reinterpret_cast<LPCITEMIDLIST>(lParam);
 
@@ -124,10 +127,9 @@ BrowseCallbackProc(HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData)
 
 HRESULT CMoveToMenu::DoRealMove(LPCMINVOKECOMMANDINFO lpici, LPCITEMIDLIST pidl)
 {
-    CComHeapPtr<CIDA> pCIDA;
-    HRESULT hr = _GetCidlFromDataObject(m_pDataObject, &pCIDA);
-    if (FAILED_UNEXPECTEDLY(hr))
-        return hr;
+    CDataObjectHIDA pCIDA(m_pDataObject);
+    if (FAILED_UNEXPECTEDLY(pCIDA.hr()))
+        return pCIDA.hr();
 
     PCUIDLIST_ABSOLUTE pidlParent = HIDA_GetPIDLFolder(pCIDA);
     if (!pidlParent)
@@ -178,16 +180,21 @@ HRESULT CMoveToMenu::DoRealMove(LPCMINVOKECOMMANDINFO lpici, LPCITEMIDLIST pidl)
     op.pFrom = strFiles;
     op.pTo = szPath;
     op.fFlags = FOF_ALLOWUNDO;
-    return ((SHFileOperation(&op) == 0) ? S_OK : E_FAIL);
+    int res = SHFileOperationW(&op);
+    if (res)
+    {
+        ERR("SHFileOperationW failed with 0x%x\n", res);
+        return E_FAIL;
+    }
+    return S_OK;
 }
 
 CStringW CMoveToMenu::DoGetFileTitle()
 {
     CStringW ret = L"(file)";
 
-    CComHeapPtr<CIDA> pCIDA;
-    HRESULT hr = _GetCidlFromDataObject(m_pDataObject, &pCIDA);
-    if (FAILED_UNEXPECTEDLY(hr))
+    CDataObjectHIDA pCIDA(m_pDataObject);
+    if (FAILED_UNEXPECTEDLY(pCIDA.hr()))
         return ret;
 
     PCUIDLIST_ABSOLUTE pidlParent = HIDA_GetPIDLFolder(pCIDA);