diff --git a/dlls/mshtml/htmlelem.c b/dlls/mshtml/htmlelem.c
index 82967d890d7..5c38ebb7a91 100644
--- a/dlls/mshtml/htmlelem.c
+++ b/dlls/mshtml/htmlelem.c
@@ -446,32 +446,9 @@ static HRESULT WINAPI HTMLElement_get_style(IHTMLElement *iface, IHTMLStyle **p)
TRACE("(%p)->(%p)\n", This, p);
if(!This->style) {
- nsIDOMElementCSSInlineStyle *nselemstyle;
- nsIDOMCSSStyleDeclaration *nsstyle;
- nsresult nsres;
HRESULT hres;
- if(!This->nselem) {
- FIXME("NULL nselem\n");
- return E_NOTIMPL;
- }
-
- nsres = nsIDOMHTMLElement_QueryInterface(This->nselem, &IID_nsIDOMElementCSSInlineStyle,
- (void**)&nselemstyle);
- if(NS_FAILED(nsres)) {
- ERR("Could not get nsIDOMCSSStyleDeclaration interface: %08x\n", nsres);
- return E_FAIL;
- }
-
- nsres = nsIDOMElementCSSInlineStyle_GetStyle(nselemstyle, &nsstyle);
- nsIDOMElementCSSInlineStyle_Release(nselemstyle);
- if(NS_FAILED(nsres)) {
- ERR("GetStyle failed: %08x\n", nsres);
- return E_FAIL;
- }
-
- hres = HTMLStyle_Create(This, nsstyle, &This->style);
- nsIDOMCSSStyleDeclaration_Release(nsstyle);
+ hres = HTMLStyle_Create(This, &This->style);
if(FAILED(hres))
return hres;
}
diff --git a/dlls/mshtml/htmlstyle.c b/dlls/mshtml/htmlstyle.c
index b9f0ddd373c..3d67402414c 100644
--- a/dlls/mshtml/htmlstyle.c
+++ b/dlls/mshtml/htmlstyle.c
@@ -17,6 +17,7 @@
*/
#include
+#include
#include
#define COBJMACROS
@@ -3039,13 +3040,34 @@ static dispex_static_data_t HTMLStyle_dispex = {
HTMLStyle_iface_tids
};
-HRESULT HTMLStyle_Create(HTMLElement *elem, nsIDOMCSSStyleDeclaration *nsstyle, HTMLStyle **ret)
+HRESULT HTMLStyle_Create(HTMLElement *elem, HTMLStyle **ret)
{
+ nsIDOMElementCSSInlineStyle *nselemstyle;
+ nsIDOMCSSStyleDeclaration *nsstyle;
HTMLStyle *style;
+ nsresult nsres;
+
+ if(!elem->nselem) {
+ FIXME("NULL nselem\n");
+ return E_NOTIMPL;
+ }
+
+ nsres = nsIDOMHTMLElement_QueryInterface(elem->nselem, &IID_nsIDOMElementCSSInlineStyle,
+ (void**)&nselemstyle);
+ assert(nsres == NS_OK);
+
+ nsres = nsIDOMElementCSSInlineStyle_GetStyle(nselemstyle, &nsstyle);
+ nsIDOMElementCSSInlineStyle_Release(nselemstyle);
+ if(NS_FAILED(nsres)) {
+ ERR("GetStyle failed: %08x\n", nsres);
+ return E_FAIL;
+ }
style = heap_alloc_zero(sizeof(HTMLStyle));
- if(!style)
+ if(!style) {
+ nsIDOMCSSStyleDeclaration_Release(nsstyle);
return E_OUTOFMEMORY;
+ }
style->IHTMLStyle_iface.lpVtbl = &HTMLStyleVtbl;
style->ref = 1;
diff --git a/dlls/mshtml/htmlstyle.h b/dlls/mshtml/htmlstyle.h
index ce42d3e3819..571931b62c2 100644
--- a/dlls/mshtml/htmlstyle.h
+++ b/dlls/mshtml/htmlstyle.h
@@ -106,6 +106,7 @@ typedef enum {
STYLEID_Z_INDEX
} styleid_t;
+HRESULT HTMLStyle_Create(HTMLElement*,HTMLStyle**) DECLSPEC_HIDDEN;
void HTMLStyle2_Init(HTMLStyle*) DECLSPEC_HIDDEN;
void HTMLStyle3_Init(HTMLStyle*) DECLSPEC_HIDDEN;
diff --git a/dlls/mshtml/mshtml_private.h b/dlls/mshtml/mshtml_private.h
index 1f51804cc58..abc97945a28 100644
--- a/dlls/mshtml/mshtml_private.h
+++ b/dlls/mshtml/mshtml_private.h
@@ -806,7 +806,6 @@ void set_ready_state(HTMLOuterWindow*,READYSTATE) DECLSPEC_HIDDEN;
HRESULT HTMLSelectionObject_Create(HTMLDocumentNode*,nsISelection*,IHTMLSelectionObject**) DECLSPEC_HIDDEN;
HRESULT HTMLTxtRange_Create(HTMLDocumentNode*,nsIDOMRange*,IHTMLTxtRange**) DECLSPEC_HIDDEN;
-HRESULT HTMLStyle_Create(HTMLElement*,nsIDOMCSSStyleDeclaration*,HTMLStyle**) DECLSPEC_HIDDEN;
IHTMLStyleSheet *HTMLStyleSheet_Create(nsIDOMStyleSheet*) DECLSPEC_HIDDEN;
IHTMLStyleSheetsCollection *HTMLStyleSheetsCollection_Create(nsIDOMStyleSheetList*) DECLSPEC_HIDDEN;