From 04a3726c09555200ab4a241b7ac7a0002c5bafde Mon Sep 17 00:00:00 2001 From: David Quintana Date: Sun, 23 Feb 2014 16:44:54 +0000 Subject: [PATCH] [CMAKE] * Take MSVC workaround from trunk. [RSHELL] * Fix GCC build. * Add a couple error checks. svn path=/branches/shell-experiments/; revision=62307 --- base/applications/CMakeLists.txt | 1 + base/shell/rshell/CMenuBand.cpp | 18 +++++++++++------- base/shell/rshell/CStartMenu.cpp | 2 +- cmake/msvc.cmake | 9 ++++++++- 4 files changed, 21 insertions(+), 9 deletions(-) diff --git a/base/applications/CMakeLists.txt b/base/applications/CMakeLists.txt index c379edc6e9e..ca7fba2f8cc 100644 --- a/base/applications/CMakeLists.txt +++ b/base/applications/CMakeLists.txt @@ -16,6 +16,7 @@ add_subdirectory(kbswitch) add_subdirectory(logoff) add_subdirectory(magnify) add_subdirectory(mmc) +add_subdirectory(mplay32) add_subdirectory(msconfig) add_subdirectory(mscutils) add_subdirectory(mstsc) diff --git a/base/shell/rshell/CMenuBand.cpp b/base/shell/rshell/CMenuBand.cpp index fe23478dbb4..b71e6e3f125 100644 --- a/base/shell/rshell/CMenuBand.cpp +++ b/base/shell/rshell/CMenuBand.cpp @@ -1118,7 +1118,9 @@ HRESULT CMenuSFToolbar::FillToolbar() tbb.fsStyle = 0; CComPtr psi; - SHCreateShellItem(NULL, m_shellFolder, item, &psi); + hr = SHCreateShellItem(NULL, m_shellFolder, item, &psi); + if (FAILED(hr)) + return hr; hr = psi->GetDisplayName(SIGDN_NORMALDISPLAY, &MenuString); if (FAILED(hr)) @@ -1150,7 +1152,7 @@ HRESULT CMenuSFToolbar::FillToolbar() if (i == 0) { TBBUTTON tbb = { 0 }; - PWSTR MenuString = L"(Empty)"; + PCWSTR MenuString = L"(Empty)"; tbb.fsState = 0/*TBSTATE_DISABLED*/; tbb.fsStyle = 0; @@ -1301,7 +1303,9 @@ HRESULT CMenuSFToolbar::HasSubMenu(UINT uItem) { HRESULT hr; CComPtr psi; - SHCreateShellItem(NULL, m_shellFolder, GetPidlFromId(uItem), &psi); + hr = SHCreateShellItem(NULL, m_shellFolder, GetPidlFromId(uItem), &psi); + if (FAILED(hr)) + return S_FALSE; SFGAOF attrs; hr = psi->GetAttributes(SFGAO_FOLDER, &attrs); @@ -1312,14 +1316,14 @@ HRESULT CMenuSFToolbar::HasSubMenu(UINT uItem) } CMenuBand::CMenuBand() : - m_site(NULL), - m_psmc(NULL), m_staticToolbar(NULL), m_SFToolbar(NULL), + m_site(NULL), + m_psmc(NULL), + m_subMenuChild(NULL), m_useBigIcons(FALSE), m_hotBar(NULL), - m_hotItem(-1), - m_subMenuChild(NULL) + m_hotItem(-1) { m_focusManager = CMenuFocusManager::AcquireManager(); } diff --git a/base/shell/rshell/CStartMenu.cpp b/base/shell/rshell/CStartMenu.cpp index d1b324c3aa0..08be0ba68c8 100644 --- a/base/shell/rshell/CStartMenu.cpp +++ b/base/shell/rshell/CStartMenu.cpp @@ -266,7 +266,7 @@ public: }; extern "C" -HRESULT +HRESULT WINAPI CStartMenu_Constructor(REFIID riid, void **ppv) { IShellMenu* pShellMenu; diff --git a/cmake/msvc.cmake b/cmake/msvc.cmake index ff82dfab108..6bfe1e6c45d 100644 --- a/cmake/msvc.cmake +++ b/cmake/msvc.cmake @@ -121,7 +121,14 @@ set(CMAKE_ASM_CREATE_STATIC_LIBRARY ${CMAKE_C_CREATE_STATIC_LIBRARY}) if(PCH) macro(add_pch _target _pch _sources) - set(_gch ${CMAKE_CURRENT_BINARY_DIR}/${_target}.pch) + + # Workaround for the MSVC toolchain (MSBUILD) /MP bug + set(_temp_gch ${CMAKE_CURRENT_BINARY_DIR}/${_target}.pch) + if(MSVC_IDE) + file(TO_NATIVE_PATH ${_temp_gch} _gch) + else() + set(_gch ${_temp_gch}) + endif() if(IS_CPP) set(_pch_language CXX) -- 2.17.1