Commit 5077fc89 authored by Huw Davies's avatar Huw Davies Committed by Alexandre Julliard

ole32: If an object exposes IExternalConnection then don't take down the stub…

ole32: If an object exposes IExternalConnection then don't take down the stub manager if we have remaining weak refs in a call that would otherwise ignore them.
parent 1864db2f
...@@ -440,6 +440,7 @@ ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs, BOOL tablewea ...@@ -440,6 +440,7 @@ ULONG stub_manager_ext_release(struct stub_manager *m, ULONG refs, BOOL tablewea
IExternalConnection_ReleaseConnection(m->extern_conn, EXTCONN_STRONG, 0, last_unlock_releases); IExternalConnection_ReleaseConnection(m->extern_conn, EXTCONN_STRONG, 0, last_unlock_releases);
if (rc == 0) if (rc == 0)
if (!(m->extern_conn && last_unlock_releases && m->weakrefs))
stub_manager_int_release(m); stub_manager_int_release(m);
return rc; return rc;
......
...@@ -1125,7 +1125,6 @@ static void test_tableweak_marshal_and_unmarshal_twice(void) ...@@ -1125,7 +1125,6 @@ static void test_tableweak_marshal_and_unmarshal_twice(void)
* behaviour is altered; the remaining weak ref prevents stub shutdown. */ * behaviour is altered; the remaining weak ref prevents stub shutdown. */
if (with_external_conn) if (with_external_conn)
{ {
todo_wine
ok_more_than_one_lock(); ok_more_than_one_lock();
IStream_Seek(pStream, ullZero, STREAM_SEEK_SET, NULL); IStream_Seek(pStream, ullZero, STREAM_SEEK_SET, NULL);
release_host_object(tid, 0); release_host_object(tid, 0);
...@@ -1347,7 +1346,6 @@ static void test_tableweak_and_normal_marshal_and_unmarshal(void) ...@@ -1347,7 +1346,6 @@ static void test_tableweak_and_normal_marshal_and_unmarshal(void)
* behaviour is altered; the remaining weak ref prevents stub shutdown. */ * behaviour is altered; the remaining weak ref prevents stub shutdown. */
if (with_external_conn) if (with_external_conn)
{ {
todo_wine
ok_more_than_one_lock(); ok_more_than_one_lock();
IStream_Seek(data.pStream1, ullZero, STREAM_SEEK_SET, NULL); IStream_Seek(data.pStream1, ullZero, STREAM_SEEK_SET, NULL);
release_host_object(tid, 1); release_host_object(tid, 1);
...@@ -1397,7 +1395,6 @@ static void test_tableweak_and_normal_marshal_and_releasedata(void) ...@@ -1397,7 +1395,6 @@ static void test_tableweak_and_normal_marshal_and_releasedata(void)
if (with_external_conn) if (with_external_conn)
{ {
todo_wine
ok_more_than_one_lock(); ok_more_than_one_lock();
IStream_Seek(data.pStream1, ullZero, STREAM_SEEK_SET, NULL); IStream_Seek(data.pStream1, ullZero, STREAM_SEEK_SET, NULL);
release_host_object(tid, 1); release_host_object(tid, 1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment