Module: wine Branch: master Commit: 20920457d709515b5915e5495bd92ffa082d096a URL: http://source.winehq.org/git/wine.git/?a=commit;h=20920457d709515b5915e5495b...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Wed Mar 8 22:46:54 2017 +0300
xmllite/tests: Fix a memory leak (Valgrind).
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/xmllite/tests/writer.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/dlls/xmllite/tests/writer.c b/dlls/xmllite/tests/writer.c index 2a97a75..0508466 100644 --- a/dlls/xmllite/tests/writer.c +++ b/dlls/xmllite/tests/writer.c @@ -31,6 +31,15 @@ #include "initguid.h" DEFINE_GUID(IID_IXmlWriterOutput, 0xc1131708, 0x0f59, 0x477f, 0x93, 0x59, 0x7d, 0x33, 0x24, 0x51, 0xbc, 0x1a);
+#define EXPECT_REF(obj, ref) _expect_ref((IUnknown *)obj, ref, __LINE__) +static void _expect_ref(IUnknown *obj, ULONG ref, int line) +{ + ULONG refcount; + IUnknown_AddRef(obj); + refcount = IUnknown_Release(obj); + ok_(__FILE__, line)(refcount == ref, "expected refcount %d, got %d\n", ref, refcount); +} + static void check_output(IStream *stream, const char *expected, BOOL todo, int line) { int len = strlen(expected), size; @@ -273,6 +282,7 @@ static void test_writeroutput(void) output = NULL; hr = CreateXmlWriterOutputWithEncodingName(&testoutput, NULL, NULL, &output); ok(hr == S_OK, "got %08x\n", hr); + EXPECT_REF(output, 1); IUnknown_Release(output);
hr = CreateXmlWriterOutputWithEncodingName(&testoutput, NULL, utf16W, &output); @@ -280,9 +290,13 @@ static void test_writeroutput(void) unk = NULL; hr = IUnknown_QueryInterface(output, &IID_IXmlWriterOutput, (void**)&unk); ok(hr == S_OK, "got %08x\n", hr); - ok(unk != NULL, "got %p\n", unk); +todo_wine + ok(unk != NULL && unk != output, "got %p, output %p\n", unk, output); + EXPECT_REF(output, 2); /* releasing 'unk' crashes on native */ IUnknown_Release(output); + EXPECT_REF(output, 1); + IUnknown_Release(output);
output = NULL; hr = CreateXmlWriterOutputWithEncodingCodePage(&testoutput, NULL, ~0u, &output); @@ -297,6 +311,7 @@ static void test_writeroutput(void) ok(unk != NULL, "got %p\n", unk); /* releasing 'unk' crashes on native */ IUnknown_Release(output); + IUnknown_Release(output); }
static void test_writestartdocument(void)