From: Gabriel Ivăncescu gabrielopcode@gmail.com
Signed-off-by: Gabriel Ivăncescu gabrielopcode@gmail.com --- dlls/mshtml/htmlattr.c | 18 ++++-------------- dlls/mshtml/mshtml_private.h | 3 +-- 2 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/dlls/mshtml/htmlattr.c b/dlls/mshtml/htmlattr.c index 634293a75b2..f23b22a0c6c 100644 --- a/dlls/mshtml/htmlattr.c +++ b/dlls/mshtml/htmlattr.c @@ -341,10 +341,7 @@ static HRESULT WINAPI HTMLDOMAttribute2_get_ownerDocument(IHTMLDOMAttribute2 *if
TRACE("(%p)->(%p)\n", This, p);
- if(This->dom_attr) - return IHTMLDOMNode2_get_ownerDocument(&This->node.IHTMLDOMNode2_iface, p); - - *p = (IDispatch*)&This->doc->IHTMLDocument2_iface; + *p = (IDispatch*)&This->node.doc->IHTMLDocument2_iface; IDispatch_AddRef(*p); return S_OK; } @@ -431,13 +428,13 @@ static HRESULT WINAPI HTMLDOMAttribute2_cloneNode(IHTMLDOMAttribute2 *iface, VAR hres = dispex_prop_name(&This->elem->node.event_target.dispex, This->dispid, &name); if(FAILED(hres)) return hres; - hres = HTMLDOMAttribute_Create(name, NULL, 0, This->doc, &new_attr); + hres = HTMLDOMAttribute_Create(name, NULL, 0, This->node.doc, &new_attr); SysFreeString(name); if(FAILED(hres)) return hres; hres = get_elem_attr_value_by_dispid(This->elem, This->dispid, &new_attr->value); }else { - hres = HTMLDOMAttribute_Create(This->name, NULL, 0, This->doc, &new_attr); + hres = HTMLDOMAttribute_Create(This->name, NULL, 0, This->node.doc, &new_attr); if(FAILED(hres)) return hres; hres = VariantCopy(&new_attr->value, &This->value); @@ -610,8 +607,6 @@ static void HTMLDOMAttribute_traverse(DispatchEx *dispex, nsCycleCollectionTrave HTMLDOMAttribute *This = impl_from_DispatchEx(dispex); HTMLDOMNode_traverse(&This->node.event_target.dispex, cb);
- if(This->doc) - note_cc_edge((nsISupports*)&This->doc->node.IHTMLDOMNode_iface, "doc", cb); if(This->elem) note_cc_edge((nsISupports*)&This->elem->node.IHTMLDOMNode_iface, "elem", cb); traverse_variant(&This->value, "value", cb); @@ -622,11 +617,6 @@ static void HTMLDOMAttribute_unlink(DispatchEx *dispex) HTMLDOMAttribute *This = impl_from_DispatchEx(dispex); HTMLDOMNode_unlink(&This->node.event_target.dispex);
- if(This->doc) { - HTMLDocumentNode *doc = This->doc; - This->doc = NULL; - IHTMLDOMNode_Release(&doc->node.IHTMLDOMNode_iface); - } if(This->elem) { HTMLElement *elem = This->elem; This->elem = NULL; @@ -748,7 +738,7 @@ HRESULT HTMLDOMAttribute_Create(const WCHAR *name, HTMLElement *elem, DISPID dis } }
- ret->doc = doc; + ret->node.doc = doc; IHTMLDOMNode_AddRef(&doc->node.IHTMLDOMNode_iface);
*attr = ret; diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h index 3dc41bae967..9c04c34272b 100644 --- a/dlls/mshtml/mshtml_private.h +++ b/dlls/mshtml/mshtml_private.h @@ -1338,7 +1338,7 @@ struct HTMLAttributeCollection { };
typedef struct { - HTMLDOMNode node; /* only dispex is valid if dom_attr is NULL */ + HTMLDOMNode node; /* only dispex and doc are valid if dom_attr is NULL */ IHTMLDOMAttribute IHTMLDOMAttribute_iface; IHTMLDOMAttribute2 IHTMLDOMAttribute2_iface; IHTMLDOMAttribute3 IHTMLDOMAttribute3_iface; @@ -1351,7 +1351,6 @@ typedef struct { /* name must be valid for detached attributes */ BSTR name;
- HTMLDocumentNode *doc; HTMLElement *elem; DISPID dispid; struct list entry;