[SHLWAPI] Sync with Wine Staging 2.2. CORE-12823
authorAmine Khaldi <amine.khaldi@reactos.org>
Sun, 26 Feb 2017 19:40:16 +0000 (19:40 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Sun, 26 Feb 2017 19:40:16 +0000 (19:40 +0000)
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
reactos/dll/win32/shlwapi/regstream.c
reactos/dll/win32/shlwapi/url.c
reactos/media/doc/README.WINE

index f90769e..2913adf 100644 (file)
@@ -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.
  */
  *  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);
 
 {
   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;
     return FALSE;
-#endif
 
   if (lpNewItem->cbSize < sizeof(DATABLOCK_HEADER) ||
       lpNewItem->dwSignature == CLIST_ID_CONTAINER)
 
   if (lpNewItem->cbSize < sizeof(DATABLOCK_HEADER) ||
       lpNewItem->dwSignature == CLIST_ID_CONTAINER)
-#ifndef __REACTOS__
-    return S_OK;
-#else
     return FALSE;
     return FALSE;
-#endif
 
   ulSize = lpNewItem->cbSize;
 
 
   ulSize = lpNewItem->cbSize;
 
@@ -136,15 +123,9 @@ WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem)
     lpInsertAt = NextItem(lpInsertAt);
     lpInsertAt->cbSize = 0;
 
     lpInsertAt = NextItem(lpInsertAt);
     lpInsertAt->cbSize = 0;
 
-#ifdef __REACTOS__
     return TRUE;
     return TRUE;
-#endif
   }
   }
-#ifndef __REACTOS__
-  return S_OK;
-#else
   return FALSE;
   return FALSE;
-#endif
 }
 
 /*************************************************************************
 }
 
 /*************************************************************************
@@ -362,11 +343,7 @@ VOID WINAPI SHFreeDataBlockList(LPDBLIST lpList)
  */
 BOOL WINAPI SHRemoveDataBlock(LPDBLIST* lppList, DWORD dwSignature)
 {
  */
 BOOL WINAPI SHRemoveDataBlock(LPDBLIST* lppList, DWORD dwSignature)
 {
-#ifndef __REACTOS__
-  LPDATABLOCK_HEADER lpList = 0;
-#else
   LPDATABLOCK_HEADER lpList = NULL;
   LPDATABLOCK_HEADER lpList = NULL;
-#endif
   LPDATABLOCK_HEADER lpItem = NULL;
   LPDATABLOCK_HEADER lpNext;
   ULONG ulNewSize;
   LPDATABLOCK_HEADER lpItem = NULL;
   LPDATABLOCK_HEADER lpNext;
   ULONG ulNewSize;
index b4340a5..4aebab7 100644 (file)
@@ -53,10 +53,8 @@ static HRESULT WINAPI IStream_fnQueryInterface(IStream *iface, REFIID riid, LPVO
 
        *ppvObj = NULL;
 
 
        *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)
        {
 
        if(*ppvObj)
        {
index 3133361..0b76974 100644 (file)
@@ -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)
 
     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;
     }
 
             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;
             dwFlags |= URL_ESCAPE_UNSAFE;
         state = 5;
         is_file_url = TRUE;
+    } else if(url[0] == '/') {
+        state = 5;
+        is_file_url = TRUE;
     }
 
     while (*wk1) {
     }
 
     while (*wk1) {
@@ -1074,7 +1077,7 @@ HRESULT WINAPI UrlEscapeW(
     TRACE("(%p(%s) %p %p 0x%08x)\n", pszUrl, debugstr_w(pszUrl),
             pszEscaped, pcchEscaped, dwFlags);
 
     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 |
         return E_INVALIDARG;
 
     if(dwFlags & ~(URL_ESCAPE_SPACES_ONLY |
index 848411c..25e9649 100644 (file)
@@ -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/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
 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