Commit 1d8879bc authored by Rob Shearman's avatar Rob Shearman Committed by Alexandre Julliard

ole32: Add a test that shows CoFreeUnusedLibraries only frees unused libraries…

ole32: Add a test that shows CoFreeUnusedLibraries only frees unused libraries from the current apartment.
parent c40f1b66
...@@ -27,6 +27,7 @@ ...@@ -27,6 +27,7 @@
#include "winbase.h" #include "winbase.h"
#include "objbase.h" #include "objbase.h"
#include "shlguid.h" #include "shlguid.h"
#include "urlmon.h" /* for CLSID_FileProtocol */
#include "wine/test.h" #include "wine/test.h"
...@@ -701,6 +702,57 @@ static void test_CoRegisterClassObject(void) ...@@ -701,6 +702,57 @@ static void test_CoRegisterClassObject(void)
CoUninitialize(); CoUninitialize();
} }
static DWORD CALLBACK free_libraries_thread(LPVOID p)
{
CoFreeUnusedLibraries();
return 0;
}
static inline BOOL is_module_loaded(const char *module)
{
return GetModuleHandle(module) ? TRUE : FALSE;
}
static void test_CoFreeUnusedLibraries(void)
{
HRESULT hr;
IUnknown *pUnk;
DWORD tid;
HANDLE thread;
pCoInitializeEx(NULL, COINIT_APARTMENTTHREADED);
ok(!is_module_loaded("urlmon.dll"), "urlmon.dll shouldn't be loaded\n");
hr = CoCreateInstance(&CLSID_FileProtocol, NULL, CLSCTX_INPROC_SERVER, &IID_IUnknown, (void **)&pUnk);
if (hr == REGDB_E_CLASSNOTREG)
{
trace("IE not installed so can't run CoFreeUnusedLibraries test\n");
return;
}
ok_ole_success(hr, "CoCreateInstance");
ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n");
IUnknown_Release(pUnk);
ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n");
thread = CreateThread(NULL, 0, free_libraries_thread, NULL, 0, &tid);
WaitForSingleObject(thread, INFINITE);
CloseHandle(thread);
todo_wine
ok(is_module_loaded("urlmon.dll"), "urlmon.dll should be loaded\n");
CoFreeUnusedLibraries();
ok(!is_module_loaded("urlmon.dll"), "urlmon.dll shouldn't be loaded\n");
CoUninitialize();
}
START_TEST(compobj) START_TEST(compobj)
{ {
HMODULE hOle32 = GetModuleHandle("ole32"); HMODULE hOle32 = GetModuleHandle("ole32");
...@@ -724,4 +776,5 @@ START_TEST(compobj) ...@@ -724,4 +776,5 @@ START_TEST(compobj)
test_CoMarshalInterface(); test_CoMarshalInterface();
test_CoMarshalInterThreadInterfaceInStream(); test_CoMarshalInterThreadInterfaceInStream();
test_CoRegisterClassObject(); test_CoRegisterClassObject();
test_CoFreeUnusedLibraries();
} }
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