Module: wine Branch: master Commit: 7db77df36d41d0150a9cc53ef122919c25fc17a7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=7db77df36d41d0150a9cc53ef1... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Mon Oct 6 09:53:35 2008 -0500 mshtml: Fixed handing non-element nodes in IHTMLElementCollection. --- dlls/mshtml/htmlelemcol.c | 12 +++++++++--- 1 files changed, 9 insertions(+), 3 deletions(-) diff --git a/dlls/mshtml/htmlelemcol.c b/dlls/mshtml/htmlelemcol.c index cf11234..f0ca6d7 100644 --- a/dlls/mshtml/htmlelemcol.c +++ b/dlls/mshtml/htmlelemcol.c @@ -359,6 +359,9 @@ static HRESULT HTMLElementCollection_get_dispid(IUnknown *iface, BSTR name, DWOR WCHAR *ptr; DWORD idx=0; + if(!*name) + return DISP_E_UNKNOWNNAME; + for(ptr = name; *ptr && isdigitW(*ptr); ptr++) idx = idx*10 + (*ptr-'0'); @@ -484,8 +487,9 @@ IHTMLElementCollection *create_collection_from_nodelist(HTMLDocument *doc, IUnkn nsIDOMNodeList_GetLength(nslist, &length); - buf.len = buf.size = length; - if(buf.len) { + buf.len = 0; + buf.size = length; + if(length) { nsIDOMNode *nsnode; buf.buf = heap_alloc(buf.size*sizeof(HTMLElement*)); @@ -493,9 +497,11 @@ IHTMLElementCollection *create_collection_from_nodelist(HTMLDocument *doc, IUnkn for(i=0; i<length; i++) { nsIDOMNodeList_Item(nslist, i, &nsnode); if(is_elem_node(nsnode)) - buf.buf[i] = HTMLELEM_NODE_THIS(get_node(doc, nsnode, TRUE)); + buf.buf[buf.len++] = HTMLELEM_NODE_THIS(get_node(doc, nsnode, TRUE)); nsIDOMNode_Release(nsnode); } + + elem_vector_normalize(&buf); }else { buf.buf = NULL; }