Jacek Caban : mshtml: Initialize HTMLStyleSheetRulesCollection object with compat mode.

Alexandre Julliard julliard at winehq.org
Mon Mar 15 16:59:13 CDT 2021


Module: wine
Branch: master
Commit: 6c9c77fdf11a90a9b98998932bf33f0db35a2989
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6c9c77fdf11a90a9b98998932bf33f0db35a2989

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Mon Mar 15 16:18:39 2021 +0100

mshtml: Initialize HTMLStyleSheetRulesCollection object with compat mode.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/mshtml/htmlstylesheet.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/dlls/mshtml/htmlstylesheet.c b/dlls/mshtml/htmlstylesheet.c
index 74f8fc9dace..271b6985d7a 100644
--- a/dlls/mshtml/htmlstylesheet.c
+++ b/dlls/mshtml/htmlstylesheet.c
@@ -381,21 +381,26 @@ static dispex_static_data_t HTMLStyleSheetRulesCollection_dispex = {
     HTMLStyleSheetRulesCollection_iface_tids
 };
 
-static IHTMLStyleSheetRulesCollection *HTMLStyleSheetRulesCollection_Create(nsIDOMCSSRuleList *nslist)
+static HRESULT create_style_sheet_rules_collection(nsIDOMCSSRuleList *nslist, compat_mode_t compat_mode,
+                                                   IHTMLStyleSheetRulesCollection **ret)
 {
-    HTMLStyleSheetRulesCollection *ret;
+    HTMLStyleSheetRulesCollection *collection;
 
-    ret = heap_alloc(sizeof(*ret));
-    ret->IHTMLStyleSheetRulesCollection_iface.lpVtbl = &HTMLStyleSheetRulesCollectionVtbl;
-    ret->ref = 1;
-    ret->nslist = nslist;
+    if(!(collection = heap_alloc(sizeof(*collection))))
+        return E_OUTOFMEMORY;
+
+    collection->IHTMLStyleSheetRulesCollection_iface.lpVtbl = &HTMLStyleSheetRulesCollectionVtbl;
+    collection->ref = 1;
+    collection->nslist = nslist;
 
-    init_dispex(&ret->dispex, (IUnknown*)&ret->IHTMLStyleSheetRulesCollection_iface, &HTMLStyleSheetRulesCollection_dispex);
+    init_dispex_with_compat_mode(&collection->dispex, (IUnknown*)&collection->IHTMLStyleSheetRulesCollection_iface,
+                                 &HTMLStyleSheetRulesCollection_dispex, compat_mode);
 
     if(nslist)
         nsIDOMCSSRuleList_AddRef(nslist);
 
-    return &ret->IHTMLStyleSheetRulesCollection_iface;
+    *ret = &collection->IHTMLStyleSheetRulesCollection_iface;
+    return S_OK;
 }
 
 static inline HTMLStyleSheetsCollection *impl_from_IHTMLStyleSheetsCollection(IHTMLStyleSheetsCollection *iface)
@@ -896,6 +901,7 @@ static HRESULT WINAPI HTMLStyleSheet_get_rules(IHTMLStyleSheet *iface,
     HTMLStyleSheet *This = impl_from_IHTMLStyleSheet(iface);
     nsIDOMCSSRuleList *nslist = NULL;
     nsresult nsres;
+    HRESULT hres;
 
     TRACE("(%p)->(%p)\n", This, p);
 
@@ -905,8 +911,9 @@ static HRESULT WINAPI HTMLStyleSheet_get_rules(IHTMLStyleSheet *iface,
         return E_FAIL;
     }
 
-    *p = HTMLStyleSheetRulesCollection_Create(nslist);
-    return S_OK;
+    hres = create_style_sheet_rules_collection(nslist, dispex_compat_mode(&This->dispex), p);
+    nsIDOMCSSRuleList_Release(nslist);
+    return hres;
 }
 
 static const IHTMLStyleSheetVtbl HTMLStyleSheetVtbl = {




More information about the wine-cvs mailing list