ole32: don't crash when running the marshal tests on Vista.

Reece Dunn msclrhd at googlemail.com
Thu Jul 31 02:56:13 CDT 2008

2008/7/31 Rob Shearman <robertshearman at gmail.com>:
> 2008/7/30 Reece Dunn <msclrhd at googlemail.com>:
>> When running the ole32:marshal tests on Vista, the call to
>> CoUnmarshalInterface fails. This results in pProxy being NULL which
>> then causes the crash on the QueryInterface call.
>> This patch makes sure that the pProxy-dependant tests are only called
>> when pProxy is valid.
> We need to work out why the test is failing - possibly it requires
> more implementation of the object we are marshalling than in previous
> versions of Windows.

Looking at this in more detail, from

  marshal.c:2337: Test failed: "CoUnmarshalInterface" failed with
error 0x80040154
  marshal.c:2340: Test failed: Number of locks should be > 0, but actually is 0
  test failed: timed out

on my current setup, I get the first two, but the test crashes. This
may be because I have SP1 installed which makes it like the 2008
results in most cases. This is backed up by the results at
where there are Vista, Vista SP1 and 2008 test results.

NOTE: 0x80040154 is "class no registered", so I suspect that this is
due to the IWineTest interface not being registered.

> Also, the typical way of detecting failure in our COM code in Wine is
> to check the return value rather than whether a output object is NULL
> or not.

The test_marshal_and_unmarshal_invalid test in marshal.c has a similar
check (line 405), so there is already a presedence for this.

- Reece

More information about the wine-devel mailing list