Gijs Vermeulen : msxml3: Support Reset() for IEnumVARIANTs created by create_enumvariant.

Alexandre Julliard julliard at winehq.org
Wed Sep 16 15:37:33 CDT 2020


Module: wine
Branch: master
Commit: 4ad0e7485de30176c5ffee79390fc7c4b636aac2
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=4ad0e7485de30176c5ffee79390fc7c4b636aac2

Author: Gijs Vermeulen <gijsvrm at gmail.com>
Date:   Sun Sep 13 14:14:40 2020 +0200

msxml3: Support Reset() for IEnumVARIANTs created by create_enumvariant.

Signed-off-by: Gijs Vermeulen <gijsvrm at gmail.com>
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msxml3/selection.c    |  6 ++++--
 dlls/msxml3/tests/domdoc.c | 22 +++++-----------------
 2 files changed, 9 insertions(+), 19 deletions(-)

diff --git a/dlls/msxml3/selection.c b/dlls/msxml3/selection.c
index 3698d036d4..ede80627d7 100644
--- a/dlls/msxml3/selection.c
+++ b/dlls/msxml3/selection.c
@@ -543,8 +543,10 @@ static HRESULT WINAPI enumvariant_Skip(
 static HRESULT WINAPI enumvariant_Reset(IEnumVARIANT *iface)
 {
     enumvariant *This = impl_from_IEnumVARIANT( iface );
-    FIXME("(%p): stub\n", This);
-    return E_NOTIMPL;
+
+    TRACE("%p\n", This);
+    This->pos = 0;
+    return S_OK;
 }
 
 static HRESULT WINAPI enumvariant_Clone(
diff --git a/dlls/msxml3/tests/domdoc.c b/dlls/msxml3/tests/domdoc.c
index e0cb486b61..806d63bb1f 100644
--- a/dlls/msxml3/tests/domdoc.c
+++ b/dlls/msxml3/tests/domdoc.c
@@ -10236,7 +10236,6 @@ static void test_selection(void)
     SysFreeString(name);
     IXMLDOMNode_Release(node);
     VariantClear(&v[0]);
-    IEnumVARIANT_Release(enum1);
 
     hr = IXMLDOMSelection_nextNode(selection, &node);
     EXPECT_HR(hr, S_OK);
@@ -10246,12 +10245,10 @@ static void test_selection(void)
     IXMLDOMNode_Release(node);
     SysFreeString(name);
 
-    /* getting multiple elements */
-    enum1 = NULL;
-    hr = IXMLDOMSelection_get__newEnum(selection, (IUnknown**)&enum1);
+    hr = IEnumVARIANT_Reset(enum1);
     EXPECT_HR(hr, S_OK);
-    ok(enum1 != NULL, "got %p\n", enum1);
 
+    /* getting multiple elements */
     V_VT(&v[1]) = VT_EMPTY;
     V_VT(&v[0]) = VT_EMPTY;
     hr = IEnumVARIANT_Next(enum1, 2, v, &ret);
@@ -12154,12 +12151,8 @@ static void test_get_namespaces(void)
     ok(fetched == 0, "got %d, expected 0\n", fetched);
     ok(V_VT(&v[0]) == VT_EMPTY, "got %d\n", V_VT(&v[0]));
 
-    IEnumVARIANT_Release(enumv);
-
-    enumv = (void*)0xdeadbeef;
-    hr = IXMLDOMSchemaCollection_get__newEnum(collection, (IUnknown**)&enumv);
+    hr = IEnumVARIANT_Reset(enumv);
     EXPECT_HR(hr, S_OK);
-    ok(enumv != NULL, "got %p\n", enumv);
 
     V_VT(&v[1]) = VT_EMPTY;
     V_VT(&v[0]) = VT_EMPTY;
@@ -12284,12 +12277,8 @@ static void test_get_namespaces(void)
     EXPECT_HR(hr, S_FALSE);
     ok(V_VT(&v[0]) == VT_EMPTY, "got %d\n", V_VT(&v[0]));
 
-    IEnumVARIANT_Release(enumv);
-
-    enumv = (void*)0xdeadbeef;
-    hr = IXMLDOMSchemaCollection_get__newEnum(collection, (IUnknown**)&enumv);
+    hr = IEnumVARIANT_Reset(enumv);
     EXPECT_HR(hr, S_OK);
-    ok(enumv != NULL, "got %p\n", enumv);
 
     V_VT(&v[1]) = VT_EMPTY;
     V_VT(&v[0]) = VT_EMPTY;
@@ -12747,9 +12736,8 @@ static void test_namedmap_newenum(void)
     ok(!lstrcmpW(str, L"attr2"), "got %s\n", wine_dbgstr_w(str));
     SysFreeString(str);
     IXMLDOMNode_Release(node);
-    IEnumVARIANT_Release(enum2);
 
-    hr = IXMLDOMNamedNodeMap__newEnum(map, (IUnknown**)&enum2);
+    hr = IEnumVARIANT_Reset(enum2);
     EXPECT_HR(hr, S_OK);
 
     V_VT(&v[1]) = VT_EMPTY;




More information about the wine-cvs mailing list