On Tue, Jan 13, 2009 at 2:20 AM, Paul Vriens <paul.vriens.w...@gmail.com> wrote: > Austin English wrote: >> >> On Tue, Jan 13, 2009 at 1:28 AM, Paul Vriens <paul.vriens.w...@gmail.com> >> wrote: >>> >>> Austin English wrote: >>>> >>>> Pointed out by Anastasius in bug 13011. Tested on XP SP2 & 2K SP4 (and >>>> Wine, of course). >>>> >>>> >>>> >>>> ------------------------------------------------------------------------ >>>> >>>> >>> Hi Austin, >>> >>> The test case that is pointed out in bug 13011 is different though: >>> >>> hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); >>> ok(hr == S_OK, "CoInitializeEx failed with error 0x%08x\n", hr); >>> hr = OleInitialize(NULL); >>> ok(hr == S_OK, "OleInitialize failed with error 0x%08x\n", hr); >>> >>> The above succeeds on W2K3 but fails on Wine. >>> >>> -- >>> Cheers, >>> >>> Paul. >>> >> >> I was referring to this comment: >> "Calling OleInitialize() for the first time should yield S_OK - even with >> apartment already initialized by previous CoInitialize(Ex) calls. >> Calling OleInitialize() more than once yields S_FALSE for the second and >> following calls." >> >> Though that testcase should probably be added as well, in a todo_wine of >> course. >> >> >> > So maybe we should do > > hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); > ok(hr == S_OK, "CoInitializeEx failed with error 0x%08x\n", hr); > hr = OleInitialize(NULL); > todo_wine > ok(hr == S_OK, "OleInitialize failed with error 0x%08x\n", hr); > hr = OleInitialize(NULL); > ok(hr == S_FALSE, "Expected S_FALSE, hr = 0x%08x\n", hr); > > and move that to a separate test function? (Maybe in compobj.c?) I mean it's > a ole32 basic thing that's wrong, not something that should be in a specific > test I guess? > > -- > Cheers, > > Paul. >
How's this? -- -Austin
diff --git a/dlls/ole32/tests/compobj.c b/dlls/ole32/tests/compobj.c index 02dc080..4793bd6 100644 --- a/dlls/ole32/tests/compobj.c +++ b/dlls/ole32/tests/compobj.c @@ -1017,6 +1017,23 @@ static void test_CoGetObjectContext(void) CoUninitialize(); } +static void test_CoInitializeEx(void) +{ + HRESULT hr; + + hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED); + ok(hr == S_OK, "CoInitializeEx failed with error 0x%08x\n", hr); + + /* Calling OleInitialize for the first time should yield S_OK even with + * apartment already initialized by previous CoInitialize(Ex) calls. */ + hr = OleInitialize(NULL); + todo_wine ok(hr == S_OK, "OleInitialize failed with error 0x%08x\n", hr); + + /* Subsequent calls to OleInitialize should return S_FALSE */ + hr = OleInitialize(NULL); + ok(hr == S_FALSE, "Expected S_FALSE, hr = 0x%08x\n", hr); +} + START_TEST(compobj) { HMODULE hOle32 = GetModuleHandle("ole32"); @@ -1045,4 +1062,5 @@ START_TEST(compobj) test_registered_object_thread_affinity(); test_CoFreeUnusedLibraries(); test_CoGetObjectContext(); + test_CoInitializeEx(); }