[PATCH 2/4] Don't release reader input reference on failure, as newer versions do.
Nikolay Sivov
bunglehead at gmail.com
Mon Jan 25 13:37:59 CST 2010
---
dlls/xmllite/reader.c | 15 +++------------
dlls/xmllite/tests/reader.c | 4 +++-
2 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index 89dcf1d..e08e8fb 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -103,11 +103,8 @@ static ULONG WINAPI xmlreader_Release(IXmlReader *iface)
ref = InterlockedDecrement(&This->ref);
if (ref == 0)
{
- if (This->input)
- {
- IUnknown_Release(This->stream);
- IUnknown_Release(This->input);
- }
+ if (This->input) IUnknown_Release(This->input);
+ if (This->stream) IUnknown_Release(This->stream);
HeapFree(GetProcessHeap(), 0, This);
}
@@ -154,13 +151,7 @@ static HRESULT WINAPI xmlreader_SetInput(IXmlReader* iface, IUnknown *input)
/* set stream for supplied IXmlReaderInput */
hr = xmlreaderinput_query_for_stream(This->input, (void**)&This->stream);
- if (hr != S_OK)
- {
- /* IXmlReaderInput doesn't provide streaming interface */
- IUnknown_Release(This->input);
- This->input = NULL;
- }
- else
+ if (hr == S_OK)
This->state = XmlReadState_Initial;
return hr;
diff --git a/dlls/xmllite/tests/reader.c b/dlls/xmllite/tests/reader.c
index c594d48..4636d35 100644
--- a/dlls/xmllite/tests/reader.c
+++ b/dlls/xmllite/tests/reader.c
@@ -440,6 +440,7 @@ static void test_readerinput(void)
IUnknown_Release(reader_input);
IUnknown_Release(reader_input);
+ IUnknown_Release(reader_input);
IStream_Release(stream);
/* test input interface selection sequence */
@@ -479,7 +480,8 @@ static void test_readerinput(void)
IUnknown_Release(input);
ref = IUnknown_AddRef(reader_input);
- ok(ref == 2, "Expected 2, got %d\n", ref);
+ ok(ref == 3 || broken(ref == 2) /* versions 1.0.x and 1.1.x - XP, Vista */,
+ "Expected 3, got %d\n", ref);
IUnknown_Release(reader_input);
/* repeat another time, no check or caching here */
input_iids.count = 0;
--
1.5.6.5
--=-HoONVgAUBpBMaDaJZ1l3--
More information about the wine-patches
mailing list