On 01/21/2010 06:54 PM, Reece Dunn wrote:
2010/1/21 Nikolay Sivovbunglehead@gmail.com:
On 1/21/2010 20:41, Reece Dunn wrote:
2010/1/21 Nikolay Sivovbunglehead@gmail.com:
On 1/21/2010 19:49, Paul Vriens wrote:
On 21 jan 2010, at 17:26, Nikolay Sivovbunglehead@gmail.com wrote:
On 1/21/2010 19:19, Paul Vriens wrote:
> > On 01/18/2010 10:28 PM, Nikolay Sivov wrote: > >> >> Add basic test structure for IXmlReader >> >> > > Hi Nikolay, > > This one crashes on Vista without a servicepack at: > > + IXmlReader_Release(reader); > +} > > All the calls before that one look ok (they produce the expected > output). > > I guess "vista without an SP" can be considered broken(), but how do > deal with that? > >
That's a bit strange. Could you test for reader pointer around this:
hr = pCreateXmlReader(&IID_IXmlReader, (LPVOID*)&reader, NULL); ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
Add reader = 0xdeadbeef; and test what is reader after a call.
Hm. So it's created ok, at least looks so.
I don't see how to fix this. We could remove this _Release of course, but will leak.
Can't you do something like:
ULONG count; count = IXmlReader_AddRef(reader); ok (count == 2, "Expected AddRef to return 2, got: %d\n", count) while (count> 0) count = IXmlReader_Release(reader);
Maybe. It's ugly of course, cause it's not clear at all why refcount could be zero just after creation with success code and not zero pointer. Btw, could you try it?
I don't have access to a Windows test machine to try it out, and don't have access to my home Linux dev box, so can't create a patch for the test bot at the moment.
- Reece
Just checked and it doesn't help. The first release is fine but the second crashes again.
It's really broken on Vista with no SP.