Huw Davies : ole32: CoRegisterMessageFilter shouldn' t crash on an uninitialized apartment.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Nov 17 04:54:11 CST 2006


Module: wine
Branch: master
Commit: 241336c7491e5ef214c78d39ef1fb380846614fe
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=241336c7491e5ef214c78d39ef1fb380846614fe

Author: Huw Davies <huw at codeweavers.com>
Date:   Thu Nov 16 17:49:31 2006 +0000

ole32: CoRegisterMessageFilter shouldn't crash on an uninitialized apartment.

---

 dlls/ole32/compobj.c       |    4 ++--
 dlls/ole32/tests/compobj.c |    5 +++--
 2 files changed, 5 insertions(+), 4 deletions(-)

diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index db76dbc..59093ff 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -2671,9 +2671,9 @@ HRESULT WINAPI CoRegisterMessageFilter(
     apt = COM_CurrentApt();
 
     /* can't set a message filter in a multi-threaded apartment */
-    if (apt->multi_threaded)
+    if (!apt || apt->multi_threaded)
     {
-        ERR("can't set message filter in MTA\n");
+        WARN("can't set message filter in MTA or uninitialized apt\n");
         return CO_E_NOT_SUPPORTED;
     }
 
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c
index b2e9bf9..81bf831 100644
--- a/dlls/ole32/tests/compobj.c
+++ b/dlls/ole32/tests/compobj.c
@@ -250,9 +250,10 @@ static void test_CoRegisterMessageFilter
     HRESULT hr;
     IMessageFilter *prev_filter;
 
-#if 0 /* crashes without an apartment! */
     hr = CoRegisterMessageFilter(&MessageFilter, &prev_filter);
-#endif
+    ok(hr == CO_E_NOT_SUPPORTED,
+        "CoRegisterMessageFilter should have failed with CO_E_NOT_SUPPORTED instead of 0x%08x\n",
+        hr);
 
     pCoInitializeEx(NULL, COINIT_MULTITHREADED);
     prev_filter = (IMessageFilter *)0xdeadbeef;




More information about the wine-cvs mailing list