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