msxml3/tests: Don't overwrite a variant which is later used in a QueryInterface call.

Huw Davies huw at codeweavers.com
Fri May 9 03:14:46 CDT 2014


This was crashing on Windows 8; presumably the payload of the variant was also being cleared.
---
 dlls/msxml3/tests/xmldoc.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/dlls/msxml3/tests/xmldoc.c b/dlls/msxml3/tests/xmldoc.c
index 2478a57..b724f5c 100644
--- a/dlls/msxml3/tests/xmldoc.c
+++ b/dlls/msxml3/tests/xmldoc.c
@@ -656,7 +656,7 @@ static void test_xmlelem_collection(void)
     WCHAR path[MAX_PATH];
     LONG length, type;
     ULONG num_vars;
-    VARIANT var, vIndex, vName;
+    VARIANT var, dummy, vIndex, vName;
     BSTR url, str;
     static const CHAR szBankXML[] = "bank.xml";
     static const WCHAR szNumber[] = {'N','U','M','B','E','R',0};
@@ -766,14 +766,16 @@ static void test_xmlelem_collection(void)
     ok(num_vars == 1, "Expected 1, got %d\n", num_vars);
 
     /* try advance further, no children left */
-    hr = IEnumVARIANT_Next(enumVar, 1, &var, &num_vars);
+    V_VT(&dummy) = VT_I4;
+    hr = IEnumVARIANT_Next(enumVar, 1, &dummy, &num_vars);
     ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr);
-    ok(V_VT(&var) == 0, "Expected 0, got %d\n", V_VT(&var));
+    ok(V_VT(&dummy) == VT_EMPTY, "Expected 0, got %d\n", V_VT(&dummy));
     ok(num_vars == 0, "Expected 0, got %d\n", num_vars);
 
-    hr = IEnumVARIANT_Next(enumVar, 1, &var, NULL);
+    V_VT(&dummy) = VT_I4;
+    hr = IEnumVARIANT_Next(enumVar, 1, &dummy, NULL);
     ok(hr == S_FALSE, "Expected S_FALSE, got %08x\n", hr);
-    ok(V_VT(&var) == 0, "Expected 0, got %d\n", V_VT(&var));
+    ok(V_VT(&dummy) == VT_EMPTY, "Expected 0, got %d\n", V_VT(&dummy));
 
     hr = IDispatch_QueryInterface(V_DISPATCH(&var), &IID_IXMLElement, (LPVOID *)&child);
     ok(hr == S_OK, "Expected S_OK, got %08x\n", hr);
-- 
1.8.0




More information about the wine-patches mailing list