- Correct implementation of _169 (call of Release). This fixes crashes when actually attempting to call Release. - Correct some traces.
diff --git a/dlls/shlwapi/ordinal.c b/dlls/shlwapi/ordinal.c index e03918b..971c27a 100644 --- a/dlls/shlwapi/ordinal.c +++ b/dlls/shlwapi/ordinal.c
@@ -843,11 +843,16 @@ * * Do IUnknown::Release on passed object. */ -DWORD WINAPI SHLWAPI_169 (IUnknown * lpUnknown) +DWORD WINAPI SHLWAPI_169 (IUnknown ** lpUnknown) { + IUnknown *temp; + TRACE("(%p)\n",lpUnknown); if(!lpUnknown || !*((LPDWORD)lpUnknown)) return 0; - return IUnknown_Release(lpUnknown); + temp = *lpUnknown; + *lpUnknown = NULL; + TRACE("doing Release\n"); + return IUnknown_Release(temp); } /************************************************************************* @@ -904,12 +909,12 @@ /* see if SetSite interface exists for IObjectWithSite object */ ret = IUnknown_QueryInterface((IUnknown *)p1, (REFIID)id1, (LPVOID *)&p1); - TRACE("first IU_QI ret=%08lx, p1=%08lx\n", ret, (DWORD)p1); + TRACE("first IU_QI ret=%08lx, p1=%p\n", ret, p1); if (ret) { /* see if GetClassId interface exists for IPersistMoniker object */ ret = IUnknown_QueryInterface((IUnknown *)p1, (REFIID)id2, (LPVOID *)&aa); - TRACE("second IU_QI ret=%08lx, p1=%08lx\n", ret, aa); + TRACE("second IU_QI ret=%08lx, aa=%08lx\n", ret, aa); if (ret) return ret; /* fake a GetClassId call */ @@ -1422,7 +1427,7 @@ HCURSOR hCursor; char * clsname = "WorkerA"; - FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx)stub\n", + FIXME("(0x%08lx 0x%08x 0x%08lx 0x%08lx 0x%08x 0x%08lx) partial stub\n", wndProc,hWndParent,dwExStyle,dwStyle,hMenu,z); hCursor = LoadCursorA(0x00000000,IDC_ARROWA);