Jacek Caban : mshtml: Fixed HTMLElementCollectionEnum_Next implementation for NULL pCeltFetched.

Alexandre Julliard julliard at winehq.org
Tue Apr 22 13:23:20 CDT 2014


Module: wine
Branch: master
Commit: 3ec1da918ca8147a5780564fb63d606b0fd8610f
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=3ec1da918ca8147a5780564fb63d606b0fd8610f

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Tue Apr 22 16:23:01 2014 +0200

mshtml: Fixed HTMLElementCollectionEnum_Next implementation for NULL pCeltFetched.

---

 dlls/mshtml/htmlelemcol.c |    3 ++-
 dlls/mshtml/tests/dom.c   |   12 ++++++++++--
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/dlls/mshtml/htmlelemcol.c b/dlls/mshtml/htmlelemcol.c
index e9cd1af..5819d44 100644
--- a/dlls/mshtml/htmlelemcol.c
+++ b/dlls/mshtml/htmlelemcol.c
@@ -160,7 +160,8 @@ static HRESULT WINAPI HTMLElementCollectionEnum_Next(IEnumVARIANT *iface, ULONG
     }
 
     This->iter += fetched;
-    *pCeltFetched = fetched;
+    if(pCeltFetched)
+        *pCeltFetched = fetched;
     return fetched == celt ? S_OK : S_FALSE;
 }
 
diff --git a/dlls/mshtml/tests/dom.c b/dlls/mshtml/tests/dom.c
index 65ca1d3..3a6380a 100644
--- a/dlls/mshtml/tests/dom.c
+++ b/dlls/mshtml/tests/dom.c
@@ -2163,9 +2163,10 @@ static void _test_elem_collection(unsigned line, IUnknown *unk,
 
         fetched = 0;
         V_VT(&v) = VT_ERROR;
-        hres = IEnumVARIANT_Next(enum_var, 1, &v, &fetched);
+        hres = IEnumVARIANT_Next(enum_var, 1, &v, i ? &fetched : NULL);
         ok_(__FILE__,line)(hres == S_OK, "Next failed: %08x\n", hres);
-        ok_(__FILE__,line)(fetched == 1, "fetched = %d\n", fetched);
+        if(i)
+            ok_(__FILE__,line)(fetched == 1, "fetched = %d\n", fetched);
         ok_(__FILE__,line)(V_VT(&v) == VT_DISPATCH && V_DISPATCH(&v), "V_VT(v) = %d\n", V_VT(&v));
         ok_(__FILE__,line)(iface_cmp((IUnknown*)disp, (IUnknown*)V_DISPATCH(&v)), "disp != V_DISPATCH(v)\n");
         IDispatch_Release(V_DISPATCH(&v));
@@ -2183,6 +2184,13 @@ static void _test_elem_collection(unsigned line, IUnknown *unk,
     hres = IEnumVARIANT_Reset(enum_var);
     ok_(__FILE__,line)(hres == S_OK, "Reset failed: %08x\n", hres);
 
+    fetched = 0xdeadbeef;
+    V_VT(&v) = VT_BOOL;
+    hres = IEnumVARIANT_Next(enum_var, 0, &v, &fetched);
+    ok_(__FILE__,line)(hres == S_OK, "Next returned %08x, expected S_FALSE\n", hres);
+    ok_(__FILE__,line)(fetched == 0, "fetched = %d\n", fetched);
+    ok_(__FILE__,line)(V_VT(&v) == VT_BOOL, "V_VT(v) = %d\n", V_VT(&v));
+
     hres = IEnumVARIANT_Skip(enum_var, len > 2 ? len-2 : 0);
     ok_(__FILE__,line)(hres == S_OK, "Skip failed: %08x\n", hres);
 




More information about the wine-cvs mailing list