diff --git a/reactos/dll/win32/shlwapi/clist.c b/reactos/dll/win32/shlwapi/clist.c index 763a40e3498..f90769eca75 100644 --- a/reactos/dll/win32/shlwapi/clist.c +++ b/reactos/dll/win32/shlwapi/clist.c @@ -54,7 +54,12 @@ static inline LPDATABLOCK_HEADER NextItem(LPDBLIST lpList) * the call returns S_OK but does not actually add the element. * See SHWriteDataBlockList. */ -HRESULT WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem) +#ifndef __REACTOS__ +HRESULT +#else +BOOL +#endif +WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewItem) { LPDATABLOCK_HEADER lpInsertAt = NULL; ULONG ulSize; @@ -62,11 +67,19 @@ HRESULT WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewIt TRACE("(%p,%p)\n", lppList, lpNewItem); if(!lppList || !lpNewItem ) +#ifndef __REACTOS__ return E_INVALIDARG; +#else + 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; @@ -123,9 +136,15 @@ HRESULT WINAPI SHAddDataBlock(LPDBLIST* lppList, const DATABLOCK_HEADER *lpNewIt lpInsertAt = NextItem(lpInsertAt); lpInsertAt->cbSize = 0; - return lpNewItem->cbSize; +#ifdef __REACTOS__ + return TRUE; +#endif } +#ifndef __REACTOS__ return S_OK; +#else + return FALSE; +#endif } /************************************************************************* @@ -343,7 +362,11 @@ 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/rostests/winetests/shlwapi/clist.c b/rostests/winetests/shlwapi/clist.c index 438f605879b..e7fc4f9f59d 100755 --- a/rostests/winetests/shlwapi/clist.c +++ b/rostests/winetests/shlwapi/clist.c @@ -223,7 +223,7 @@ static IStreamVtbl iclvt = static HMODULE SHLWAPI_hshlwapi = 0; static VOID (WINAPI *pSHLWAPI_19)(LPSHLWAPI_CLIST); -static HRESULT (WINAPI *pSHLWAPI_20)(LPSHLWAPI_CLIST*,LPCSHLWAPI_CLIST); +static BOOL (WINAPI *pSHLWAPI_20)(LPSHLWAPI_CLIST*,LPCSHLWAPI_CLIST); static BOOL (WINAPI *pSHLWAPI_21)(LPSHLWAPI_CLIST*,ULONG); static LPSHLWAPI_CLIST (WINAPI *pSHLWAPI_22)(LPSHLWAPI_CLIST,ULONG); static HRESULT (WINAPI *pSHLWAPI_17)(IStream*, SHLWAPI_CLIST*); @@ -297,6 +297,7 @@ static void test_CList(void) struct dummystream streamobj; LPSHLWAPI_CLIST list = NULL; LPCSHLWAPI_CLIST item = SHLWAPI_CLIST_items; + BOOL bRet; HRESULT hRet; LPSHLWAPI_CLIST inserted; BYTE buff[64]; @@ -317,10 +318,10 @@ static void test_CList(void) buff[sizeof(SHLWAPI_CLIST)+i] = i*2; /* Add it */ - hRet = pSHLWAPI_20(&list, inserted); - ok(hRet > S_OK, "failed list add\n"); + bRet = pSHLWAPI_20(&list, inserted); + ok(bRet == TRUE, "failed list add\n"); - if (hRet > S_OK) + if (bRet == TRUE) { ok(list && list->ulSize, "item not added\n"); @@ -395,11 +396,8 @@ static void test_CList(void) inserted = (LPSHLWAPI_CLIST)buff; inserted->ulSize = sizeof(SHLWAPI_CLIST) -1; inserted->ulId = 33; - - /* The call succeeds but the item is not inserted, except on some early - * versions which return failure. Wine behaves like later versions. - */ - pSHLWAPI_20(&list, inserted); + bRet = pSHLWAPI_20(&list, inserted); + ok(bRet == FALSE, "Expected failure\n"); inserted = pSHLWAPI_22(list, 33); ok(inserted == NULL, "inserted bad element size\n"); @@ -407,9 +405,8 @@ static void test_CList(void) inserted = (LPSHLWAPI_CLIST)buff; inserted->ulSize = 44; inserted->ulId = ~0U; - - /* See comment above, some early versions fail this call */ - pSHLWAPI_20(&list, inserted); + bRet = pSHLWAPI_20(&list, inserted); + ok(bRet == FALSE, "Expected failure\n"); item = SHLWAPI_CLIST_items;