diff --git a/dlls/mshtml/htmlstylesheet.c b/dlls/mshtml/htmlstylesheet.c
index b3ea09e8333..74f8fc9dace 100644
--- a/dlls/mshtml/htmlstylesheet.c
+++ b/dlls/mshtml/htmlstylesheet.c
@@ -207,29 +207,32 @@ static dispex_static_data_t HTMLStyleSheetRule_dispex = {
HTMLStyleSheetRule_iface_tids
};
-static IHTMLStyleSheetRule *HTMLStyleSheetRule_Create(nsIDOMCSSRule *nsstylesheetrule)
+static HRESULT create_style_sheet_rule(nsIDOMCSSRule *nsstylesheetrule, compat_mode_t compat_mode,
+ IHTMLStyleSheetRule **ret)
{
- HTMLStyleSheetRule *ret;
+ HTMLStyleSheetRule *rule;
nsresult nsres;
- if(!(ret = heap_alloc(sizeof(*ret))))
- return NULL;
+ if(!(rule = heap_alloc(sizeof(*rule))))
+ return E_OUTOFMEMORY;
- ret->IHTMLStyleSheetRule_iface.lpVtbl = &HTMLStyleSheetRuleVtbl;
- ret->ref = 1;
- ret->nsstylesheetrule = NULL;
+ rule->IHTMLStyleSheetRule_iface.lpVtbl = &HTMLStyleSheetRuleVtbl;
+ rule->ref = 1;
+ rule->nsstylesheetrule = NULL;
- init_dispex(&ret->dispex, (IUnknown *)&ret->IHTMLStyleSheetRule_iface, &HTMLStyleSheetRule_dispex);
+ init_dispex_with_compat_mode(&rule->dispex, (IUnknown *)&rule->IHTMLStyleSheetRule_iface, &HTMLStyleSheetRule_dispex,
+ compat_mode);
if (nsstylesheetrule)
{
nsres = nsIDOMCSSRule_QueryInterface(nsstylesheetrule, &IID_nsIDOMCSSRule,
- (void **)&ret->nsstylesheetrule);
+ (void **)&rule->nsstylesheetrule);
if (NS_FAILED(nsres))
ERR("Could not get nsIDOMCSSRule interface: %08x\n", nsres);
}
- return &ret->IHTMLStyleSheetRule_iface;
+ *ret = &rule->IHTMLStyleSheetRule_iface;
+ return S_OK;
}
static inline HTMLStyleSheetRulesCollection *impl_from_IHTMLStyleSheetRulesCollection(IHTMLStyleSheetRulesCollection *iface)
@@ -339,13 +342,13 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_get_length(IHTMLStyleSheetRu
}
static HRESULT WINAPI HTMLStyleSheetRulesCollection_item(IHTMLStyleSheetRulesCollection *iface,
- LONG index, IHTMLStyleSheetRule **ppHTMLStyleSheetRule)
+ LONG index, IHTMLStyleSheetRule **p)
{
HTMLStyleSheetRulesCollection *This = impl_from_IHTMLStyleSheetRulesCollection(iface);
nsIDOMCSSRule *nsstylesheetrule;
nsresult nsres;
- TRACE("(%p)->(%d %p)\n", This, index, ppHTMLStyleSheetRule);
+ TRACE("(%p)->(%d %p)\n", This, index, p);
nsres = nsIDOMCSSRuleList_Item(This->nslist, index, &nsstylesheetrule);
if(NS_FAILED(nsres))
@@ -353,8 +356,7 @@ static HRESULT WINAPI HTMLStyleSheetRulesCollection_item(IHTMLStyleSheetRulesCol
if(!nsstylesheetrule)
return E_INVALIDARG;
- *ppHTMLStyleSheetRule = HTMLStyleSheetRule_Create(nsstylesheetrule);
- return *ppHTMLStyleSheetRule ? S_OK : E_OUTOFMEMORY;
+ return create_style_sheet_rule(nsstylesheetrule, dispex_compat_mode(&This->dispex), p);
}
static const IHTMLStyleSheetRulesCollectionVtbl HTMLStyleSheetRulesCollectionVtbl = {