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