Jacek Caban : mshtml: Use stored nsdoc in IHTMLDocument3::getElementById.
Module: wine Branch: master Commit: f1ff6b0993d81aa1296f8f55ba9b7f3c2d743e92 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f1ff6b0993d81aa1296f8f55ba... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Oct 8 13:29:56 2008 -0500 mshtml: Use stored nsdoc in IHTMLDocument3::getElementById. --- dlls/mshtml/htmldoc3.c | 35 +++++++++++++++++------------------ 1 files changed, 17 insertions(+), 18 deletions(-) diff --git a/dlls/mshtml/htmldoc3.c b/dlls/mshtml/htmldoc3.c index d636834..b0efb7c 100644 --- a/dlls/mshtml/htmldoc3.c +++ b/dlls/mshtml/htmldoc3.c @@ -421,37 +421,36 @@ static HRESULT WINAPI HTMLDocument3_getElementById(IHTMLDocument3 *iface, BSTR v IHTMLElement **pel) { HTMLDocument *This = HTMLDOC3_THIS(iface); - nsIDOMDocument *nsdoc = NULL; - nsIDOMElement *nselem = NULL; + nsIDOMElement *nselem; HTMLDOMNode *node; nsAString id_str; nsresult nsres; TRACE("(%p)->(%s %p)\n", This, debugstr_w(v), pel); - *pel = NULL; - - if(!This->nscontainer) - return S_OK; - - nsres = nsIWebNavigation_GetDocument(This->nscontainer->navigation, &nsdoc); - if(NS_FAILED(nsres) || !nsdoc) - return S_OK; + if(!This->nsdoc) { + WARN("NULL nsdoc\n"); + return E_UNEXPECTED; + } nsAString_Init(&id_str, v); - nsIDOMDocument_GetElementById(nsdoc, &id_str, &nselem); - nsIDOMDocument_Release(nsdoc); + nsres = nsIDOMHTMLDocument_GetElementById(This->nsdoc, &id_str, &nselem); nsAString_Finish(&id_str); + if(FAILED(nsres)) { + ERR("GetElementById failed: %08x\n", nsres); + return E_FAIL; + } + + if(nselem) { + node = get_node(This, (nsIDOMNode*)nselem, TRUE); + nsIDOMElement_Release(nselem); - if(!nselem) { + IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)pel); + }else { *pel = NULL; - return S_OK; } - node = get_node(This, (nsIDOMNode*)nselem, TRUE); - nsIDOMElement_Release(nselem); - - return IHTMLDOMNode_QueryInterface(HTMLDOMNODE(node), &IID_IHTMLElement, (void**)pel); + return S_OK; }
participants (1)
-
Alexandre Julliard