From 7b6b59705aa4b2e72f105959c467c20919aa9fa1 Mon Sep 17 00:00:00 2001 From: Amine Khaldi Date: Sun, 26 Feb 2017 19:40:16 +0000 Subject: [PATCH] [SHLWAPI] Sync with Wine Staging 2.2. CORE-12823 36b45a3 shlwapi: Fix the return value of SHAddDataBlock 437123b shlwapi: Avoid 'else if' for IStream_fnQueryInterface. 101edb1 shlwapi: Changed UrlEscapeW error paths and add tests. 4eac6e8 shlwapi: Remove dot segments for URLs starting with /. 6cbcc76 shlwapi: Make ParseURL case-insensitive. svn path=/trunk/; revision=73976 --- reactos/dll/win32/shlwapi/clist.c | 27 ++------------------------- reactos/dll/win32/shlwapi/regstream.c | 6 ++---- reactos/dll/win32/shlwapi/url.c | 7 +++++-- reactos/media/doc/README.WINE | 2 +- 4 files changed, 10 insertions(+), 32 deletions(-) diff --git a/reactos/dll/win32/shlwapi/clist.c b/reactos/dll/win32/shlwapi/clist.c index f90769eca75..2913adf6f5f 100644 --- a/reactos/dll/win32/shlwapi/clist.c +++ b/reactos/dll/win32/shlwapi/clist.c @@ -54,32 +54,19 @@ static inline LPDATABLOCK_HEADER NextItem(LPDBLIST lpList) * the call returns S_OK but does not actually add the element. * See SHWriteDataBlockList. */ -#ifndef __REACTOS__ -HRESULT -#else -BOOL -#endif -WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem) +BOOL WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem) { LPDATABLOCK_HEADER lpInsertAt = NULL; ULONG ulSize; TRACE("(%p,%p)\n", lppList, lpNewItem); - if(!lppList || !lpNewItem ) -#ifndef __REACTOS__ - return E_INVALIDARG; -#else + if(!lppList || !lpNewItem) return FALSE; -#endif if (lpNewItem->cbSize < sizeof(DATABLOCK_HEADER) || lpNewItem->dwSignature == CLIST_ID_CONTAINER) -#ifndef __REACTOS__ - return S_OK; -#else return FALSE; -#endif ulSize = lpNewItem->cbSize; @@ -136,15 +123,9 @@ WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem) lpInsertAt = NextItem(lpInsertAt); lpInsertAt->cbSize = 0; -#ifdef __REACTOS__ return TRUE; -#endif } -#ifndef __REACTOS__ - return S_OK; -#else return FALSE; -#endif } /************************************************************************* @@ -362,11 +343,7 @@ VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList) */ BOOL WINAPI SHRemoveDataBlock(LPDBLIST* lppList, DWORD dwSignature) { -#ifndef __REACTOS__ - LPDATABLOCK_HEADER lpList = 0; -#else LPDATABLOCK_HEADER lpList = NULL; -#endif LPDATABLOCK_HEADER lpItem = NULL; LPDATABLOCK_HEADER lpNext; ULONG ulNewSize; diff --git a/reactos/dll/win32/shlwapi/regstream.c b/reactos/dll/win32/shlwapi/regstream.c index b4340a503b7..4aebab7480c 100644 --- a/reactos/dll/win32/shlwapi/regstream.c +++ b/reactos/dll/win32/shlwapi/regstream.c @@ -53,10 +53,8 @@ static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVO *ppvObj = NULL; - if(IsEqualIID(riid, &IID_IUnknown)) /*IUnknown*/ - *ppvObj = This; - else if(IsEqualIID(riid, &IID_IStream)) /*IStream*/ - *ppvObj = This; + if(IsEqualIID(riid, &IID_IUnknown) || IsEqualIID(riid, &IID_IStream)) + *ppvObj = &This->IStream_iface; if(*ppvObj) { diff --git a/reactos/dll/win32/shlwapi/url.c b/reactos/dll/win32/shlwapi/url.c index 3133361a73f..0b769743bdd 100644 --- a/reactos/dll/win32/shlwapi/url.c +++ b/reactos/dll/win32/shlwapi/url.c @@ -123,7 +123,7 @@ static DWORD get_scheme_code(LPCWSTR scheme, DWORD scheme_len) for(i=0; i < sizeof(shlwapi_schemes)/sizeof(shlwapi_schemes[0]); i++) { if(scheme_len == strlenW(shlwapi_schemes[i].scheme_name) - && !memcmp(scheme, shlwapi_schemes[i].scheme_name, scheme_len*sizeof(WCHAR))) + && !memicmpW(scheme, shlwapi_schemes[i].scheme_name, scheme_len)) return shlwapi_schemes[i].scheme_number; } @@ -357,6 +357,9 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized, dwFlags |= URL_ESCAPE_UNSAFE; state = 5; is_file_url = TRUE; + } else if(url[0] == '/') { + state = 5; + is_file_url = TRUE; } while (*wk1) { @@ -1074,7 +1077,7 @@ HRESULT WINAPI UrlEscapeW( TRACE("(%p(%s) %p %p 0x%08x)\n", pszUrl, debugstr_w(pszUrl), pszEscaped, pcchEscaped, dwFlags); - if(!pszUrl || !pcchEscaped) + if(!pszUrl || !pcchEscaped || !pszEscaped || *pcchEscaped == 0) return E_INVALIDARG; if(dwFlags & ~(URL_ESCAPE_SPACES_ONLY | diff --git a/reactos/media/doc/README.WINE b/reactos/media/doc/README.WINE index 848411cd12c..25e96498c56 100644 --- a/reactos/media/doc/README.WINE +++ b/reactos/media/doc/README.WINE @@ -174,7 +174,7 @@ reactos/dll/win32/shdoclc # Synced to WineStaging-1.9.11 reactos/dll/win32/shdocvw # Synced to WineStaging-2.2 reactos/dll/win32/shell32 # Forked at Wine-20071011 reactos/dll/win32/shfolder # Synced to WineStaging-1.9.11 -reactos/dll/win32/shlwapi # Synced to WineStaging-1.9.23 +reactos/dll/win32/shlwapi # Synced to WineStaging-2.2 reactos/dll/win32/slbcsp # Synced to WineStaging-1.9.11 reactos/dll/win32/snmpapi # Synced to WineStaging-1.9.11 reactos/dll/win32/softpub # Synced to WineStaging-1.9.11 -- 2.17.1