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