ole32: Add test for CoLockObjectExternal with fLastUnlockReleases as FALSE.
This commit is contained in:
parent
2f0373d265
commit
bcf0be6a99
|
@ -1257,7 +1257,7 @@ static void test_lock_object_external(void)
|
||||||
IStream_Seek(pStream, ullZero, STREAM_SEEK_SET, NULL);
|
IStream_Seek(pStream, ullZero, STREAM_SEEK_SET, NULL);
|
||||||
hr = CoReleaseMarshalData(pStream);
|
hr = CoReleaseMarshalData(pStream);
|
||||||
ok_ole_success(hr, CoReleaseMarshalData);
|
ok_ole_success(hr, CoReleaseMarshalData);
|
||||||
IStream_Release(pStream);
|
IStream_Seek(pStream, ullZero, STREAM_SEEK_SET, NULL);
|
||||||
|
|
||||||
ok_more_than_one_lock();
|
ok_more_than_one_lock();
|
||||||
|
|
||||||
|
@ -1268,6 +1268,42 @@ static void test_lock_object_external(void)
|
||||||
CoLockObjectExternal((IUnknown*)&Test_ClassFactory, FALSE, TRUE);
|
CoLockObjectExternal((IUnknown*)&Test_ClassFactory, FALSE, TRUE);
|
||||||
|
|
||||||
ok_no_locks();
|
ok_no_locks();
|
||||||
|
|
||||||
|
/* test CoLockObjectExternal releases reference to object with
|
||||||
|
* fLastUnlockReleases as TRUE and there are only strong references on
|
||||||
|
* the object */
|
||||||
|
CoLockObjectExternal((IUnknown*)&Test_ClassFactory, TRUE, FALSE);
|
||||||
|
|
||||||
|
ok_more_than_one_lock();
|
||||||
|
|
||||||
|
CoLockObjectExternal((IUnknown*)&Test_ClassFactory, FALSE, FALSE);
|
||||||
|
|
||||||
|
todo_wine
|
||||||
|
ok_no_locks();
|
||||||
|
if (cLocks > 0)
|
||||||
|
CoDisconnectObject((IUnknown*)&Test_ClassFactory, 0);
|
||||||
|
|
||||||
|
/* test CoLockObjectExternal doesn't release the last reference to an
|
||||||
|
* object with fLastUnlockReleases as TRUE and there is a weak reference
|
||||||
|
* on the object */
|
||||||
|
hr = CoMarshalInterface(pStream, &IID_IClassFactory, (IUnknown*)&Test_ClassFactory, MSHCTX_INPROC, NULL, MSHLFLAGS_TABLEWEAK);
|
||||||
|
ok_ole_success(hr, CoMarshalInterface);
|
||||||
|
|
||||||
|
ok_more_than_one_lock();
|
||||||
|
|
||||||
|
CoLockObjectExternal((IUnknown*)&Test_ClassFactory, TRUE, FALSE);
|
||||||
|
|
||||||
|
ok_more_than_one_lock();
|
||||||
|
|
||||||
|
CoLockObjectExternal((IUnknown*)&Test_ClassFactory, FALSE, FALSE);
|
||||||
|
|
||||||
|
ok_more_than_one_lock();
|
||||||
|
|
||||||
|
CoDisconnectObject((IUnknown*)&Test_ClassFactory, 0);
|
||||||
|
|
||||||
|
ok_no_locks();
|
||||||
|
|
||||||
|
IStream_Release(pStream);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* tests disconnecting stubs */
|
/* tests disconnecting stubs */
|
||||||
|
|
Loading…
Reference in New Issue