Module: wine Branch: master Commit: 3ec1da918ca8147a5780564fb63d606b0fd8610f URL: http://source.winehq.org/git/wine.git/?a=commit;h=3ec1da918ca8147a5780564fb6...
Author: Jacek Caban jacek@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);