From bb1fa1fd3c116c97c752a703e8e4518b9ef2d78f Mon Sep 17 00:00:00 2001 From: Thomas Faber Date: Mon, 17 Feb 2014 17:01:37 +0000 Subject: [PATCH] [SHELL32] - Fix more casts and stack corruption svn path=/trunk/; revision=62230 --- reactos/dll/win32/shell32/filedefext.cpp | 2 +- reactos/dll/win32/shell32/folders/fs.cpp | 8 ++++---- reactos/dll/win32/shell32/folders/fs.h | 2 +- reactos/dll/win32/shell32/shellole.cpp | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/reactos/dll/win32/shell32/filedefext.cpp b/reactos/dll/win32/shell32/filedefext.cpp index ac053c8cd0e..e64c1c1104f 100644 --- a/reactos/dll/win32/shell32/filedefext.cpp +++ b/reactos/dll/win32/shell32/filedefext.cpp @@ -979,7 +979,7 @@ CFileDefExt::GetSite(REFIID iid, void **ppvSite) DWORD WINAPI CFileDefExt::_CountFolderAndFilesThreadProc(LPVOID lpParameter) { - _CountFolderAndFilesData *data = reinterpret_cast<_CountFolderAndFilesData*>(lpParameter); + _CountFolderAndFilesData *data = static_cast<_CountFolderAndFilesData*>(lpParameter); DWORD ticks = 0; data->This->CountFolderAndFiles(data->hwndDlg, data->pwszBuf, data->cchBufMax, &ticks); diff --git a/reactos/dll/win32/shell32/folders/fs.cpp b/reactos/dll/win32/shell32/folders/fs.cpp index da4b7679de7..5e61e7196f9 100644 --- a/reactos/dll/win32/shell32/folders/fs.cpp +++ b/reactos/dll/win32/shell32/folders/fs.cpp @@ -1427,7 +1427,7 @@ HRESULT WINAPI CFSFolder::Drop(IDataObject *pDataObject, { if (SUCCEEDED(pAsyncOperation->GetAsyncMode(&fIsOpAsync)) && fIsOpAsync) { - _DoDropData *data = reinterpret_cast<_DoDropData*> (HeapAlloc(GetProcessHeap(), 0, sizeof(_DoDropData))); + _DoDropData *data = static_cast<_DoDropData*>(HeapAlloc(GetProcessHeap(), 0, sizeof(_DoDropData))); data->This = this; // Need to maintain this class in case the window is closed or the class exists temporarily (when dropping onto a folder). this->AddRef(); @@ -1439,7 +1439,7 @@ HRESULT WINAPI CFSFolder::Drop(IDataObject *pDataObject, data->pdwEffect = *pdwEffect; data->pDataObject->AddRef(); data->pAsyncOperation->StartOperation(NULL); - SHCreateThread(reinterpret_cast (CFSFolder::_DoDropThreadProc), reinterpret_cast (data), NULL, NULL); + SHCreateThread(CFSFolder::_DoDropThreadProc, data, NULL, NULL); return S_OK; } else @@ -1737,8 +1737,8 @@ HRESULT WINAPI CFSFolder::_DoDrop(IDataObject *pDataObject, return hr; } -DWORD CFSFolder::_DoDropThreadProc(LPVOID lpParameter) { - _DoDropData *data = reinterpret_cast<_DoDropData*>(lpParameter); +DWORD WINAPI CFSFolder::_DoDropThreadProc(LPVOID lpParameter) { + _DoDropData *data = static_cast<_DoDropData*>(lpParameter); HRESULT hr = data->This->_DoDrop(data->pDataObject, data->dwKeyState, data->pt, &data->pdwEffect); //Release the CFSFolder and data object holds in the copying thread. data->pAsyncOperation->EndOperation(hr, NULL, data->pdwEffect); diff --git a/reactos/dll/win32/shell32/folders/fs.h b/reactos/dll/win32/shell32/folders/fs.h index 23213680aea..e32ab2b7aa8 100644 --- a/reactos/dll/win32/shell32/folders/fs.h +++ b/reactos/dll/win32/shell32/folders/fs.h @@ -46,7 +46,7 @@ class CFSFolder : BOOL QueryDrop (DWORD dwKeyState, LPDWORD pdwEffect); void SF_RegisterClipFmt(); BOOL GetUniqueFileName(LPWSTR pwszBasePath, LPCWSTR pwszExt, LPWSTR pwszTarget, BOOL bShortcut); - static DWORD _DoDropThreadProc(LPVOID lpParameter); + static DWORD WINAPI _DoDropThreadProc(LPVOID lpParameter); virtual HRESULT WINAPI _DoDrop(IDataObject *pDataObject, DWORD dwKeyState, POINTL pt, DWORD *pdwEffect); public: diff --git a/reactos/dll/win32/shell32/shellole.cpp b/reactos/dll/win32/shell32/shellole.cpp index e659292d12d..ef9e56b4126 100644 --- a/reactos/dll/win32/shell32/shellole.cpp +++ b/reactos/dll/win32/shell32/shellole.cpp @@ -600,7 +600,7 @@ EXTERN_C HRESULT WINAPI SHPropStgCreate(IPropertySetStorage *psstg, REFFMTID fmt case CREATE_ALWAYS: if (SUCCEEDED(hres)) { - reinterpret_cast(*ppstg)->Release(); + (*ppstg)->Release(); hres = psstg->Delete(fmtid); if(FAILED(hres)) return hres; @@ -620,7 +620,7 @@ EXTERN_C HRESULT WINAPI SHPropStgCreate(IPropertySetStorage *psstg, REFFMTID fmt { prop.ulKind = PRSPEC_PROPID; prop.propid = PID_CODEPAGE; - hres = reinterpret_cast(*ppstg)->ReadMultiple(1, &prop, &ret); + hres = (*ppstg)->ReadMultiple(1, &prop, &ret); if (FAILED(hres) || ret.vt!=VT_I2) *puCodePage = 0; else