diff --git a/dlls/ole32/compositemoniker.c b/dlls/ole32/compositemoniker.c index 99ffd3cb464..06467978186 100644 --- a/dlls/ole32/compositemoniker.c +++ b/dlls/ole32/compositemoniker.c @@ -622,7 +622,7 @@ CompositeMonikerImpl_Hash(IMoniker* iface,DWORD* pdwHash) res = IMoniker_Hash(tempMk, &tempHash); if(FAILED(res)) break; - *pdwHash = (*pdwHash * 37) + tempHash; + *pdwHash = *pdwHash ^ tempHash; IMoniker_Release(tempMk); } diff --git a/dlls/ole32/tests/moniker.c b/dlls/ole32/tests/moniker.c index 8ae5c408bfd..aaff2093b32 100644 --- a/dlls/ole32/tests/moniker.c +++ b/dlls/ole32/tests/moniker.c @@ -657,11 +657,9 @@ static void test_generic_composite_moniker(void) hr = IMoniker_Hash(moniker, &hash); ok_ole_success(hr, IMoniker_Hash); - todo_wine { ok(hash == 0xd87, "Hash value != 0xd87, instead was 0x%08lx\n", hash); - } /* IsSystemMoniker test */