2008/7/31 Rob Shearman robertshearman@gmail.com:
2008/7/30 Reece Dunn msclrhd@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 (http://test.winehq.org/data/daafda22f840edc9a584abc7925f9ee17ef18228/vista_A...):
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 http://test.winehq.org/data/a0289148e14728e45587b8cb17f90862d8400939/, 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