Jacek Caban : mshtml: Use IUnknownVtbl in wrapper_vtbl.

Alexandre Julliard julliard at winehq.org
Wed Sep 14 10:28:52 CDT 2016


Module: wine
Branch: master
Commit: ca2e0c5e70da6c933ddc7d7f0a4ab7f536191cbd
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=ca2e0c5e70da6c933ddc7d7f0a4ab7f536191cbd

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Wed Sep 14 12:48:36 2016 +0200

mshtml: Use IUnknownVtbl in wrapper_vtbl.

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

---

 dlls/mshtml/ifacewrap.c | 210 +++++++++++++++++++++++++-----------------------
 1 file changed, 108 insertions(+), 102 deletions(-)

diff --git a/dlls/mshtml/ifacewrap.c b/dlls/mshtml/ifacewrap.c
index f31bb4a..a8a8928 100644
--- a/dlls/mshtml/ifacewrap.c
+++ b/dlls/mshtml/ifacewrap.c
@@ -215,107 +215,113 @@ DEFINE_WRAPPER_FUNC(98, 392, 784)
 DEFINE_WRAPPER_FUNC(99, 396, 792)
 
 /* The size was found by testing when calls start crashing. It looks like MS wraps up to 100 functions. */
-static const void *wrapper_vtbl[] = {
-    wrapper_QueryInterface,
-    wrapper_AddRef,
-    wrapper_Release,
-    wrapper_func_3,
-    wrapper_func_4,
-    wrapper_func_5,
-    wrapper_func_6,
-    wrapper_func_7,
-    wrapper_func_8,
-    wrapper_func_9,
-    wrapper_func_10,
-    wrapper_func_11,
-    wrapper_func_12,
-    wrapper_func_13,
-    wrapper_func_14,
-    wrapper_func_15,
-    wrapper_func_16,
-    wrapper_func_17,
-    wrapper_func_18,
-    wrapper_func_19,
-    wrapper_func_20,
-    wrapper_func_21,
-    wrapper_func_22,
-    wrapper_func_23,
-    wrapper_func_24,
-    wrapper_func_25,
-    wrapper_func_26,
-    wrapper_func_27,
-    wrapper_func_28,
-    wrapper_func_29,
-    wrapper_func_30,
-    wrapper_func_31,
-    wrapper_func_32,
-    wrapper_func_33,
-    wrapper_func_34,
-    wrapper_func_35,
-    wrapper_func_36,
-    wrapper_func_37,
-    wrapper_func_38,
-    wrapper_func_39,
-    wrapper_func_40,
-    wrapper_func_41,
-    wrapper_func_42,
-    wrapper_func_43,
-    wrapper_func_44,
-    wrapper_func_45,
-    wrapper_func_46,
-    wrapper_func_47,
-    wrapper_func_48,
-    wrapper_func_49,
-    wrapper_func_50,
-    wrapper_func_51,
-    wrapper_func_52,
-    wrapper_func_53,
-    wrapper_func_54,
-    wrapper_func_55,
-    wrapper_func_56,
-    wrapper_func_57,
-    wrapper_func_58,
-    wrapper_func_59,
-    wrapper_func_60,
-    wrapper_func_61,
-    wrapper_func_62,
-    wrapper_func_63,
-    wrapper_func_64,
-    wrapper_func_65,
-    wrapper_func_66,
-    wrapper_func_67,
-    wrapper_func_68,
-    wrapper_func_69,
-    wrapper_func_70,
-    wrapper_func_71,
-    wrapper_func_72,
-    wrapper_func_73,
-    wrapper_func_74,
-    wrapper_func_75,
-    wrapper_func_76,
-    wrapper_func_77,
-    wrapper_func_78,
-    wrapper_func_79,
-    wrapper_func_80,
-    wrapper_func_81,
-    wrapper_func_82,
-    wrapper_func_83,
-    wrapper_func_84,
-    wrapper_func_85,
-    wrapper_func_86,
-    wrapper_func_87,
-    wrapper_func_88,
-    wrapper_func_89,
-    wrapper_func_90,
-    wrapper_func_91,
-    wrapper_func_92,
-    wrapper_func_93,
-    wrapper_func_94,
-    wrapper_func_95,
-    wrapper_func_96,
-    wrapper_func_97,
-    wrapper_func_98,
-    wrapper_func_99
+static const struct {
+    IUnknownVtbl unk_vtbl;
+    const void *wrappers[97];
+} wrapper_vtbl = {
+    {
+        wrapper_QueryInterface,
+        wrapper_AddRef,
+        wrapper_Release
+    }, {
+        wrapper_func_3,
+        wrapper_func_4,
+        wrapper_func_5,
+        wrapper_func_6,
+        wrapper_func_7,
+        wrapper_func_8,
+        wrapper_func_9,
+        wrapper_func_10,
+        wrapper_func_11,
+        wrapper_func_12,
+        wrapper_func_13,
+        wrapper_func_14,
+        wrapper_func_15,
+        wrapper_func_16,
+        wrapper_func_17,
+        wrapper_func_18,
+        wrapper_func_19,
+        wrapper_func_20,
+        wrapper_func_21,
+        wrapper_func_22,
+        wrapper_func_23,
+        wrapper_func_24,
+        wrapper_func_25,
+        wrapper_func_26,
+        wrapper_func_27,
+        wrapper_func_28,
+        wrapper_func_29,
+        wrapper_func_30,
+        wrapper_func_31,
+        wrapper_func_32,
+        wrapper_func_33,
+        wrapper_func_34,
+        wrapper_func_35,
+        wrapper_func_36,
+        wrapper_func_37,
+        wrapper_func_38,
+        wrapper_func_39,
+        wrapper_func_40,
+        wrapper_func_41,
+        wrapper_func_42,
+        wrapper_func_43,
+        wrapper_func_44,
+        wrapper_func_45,
+        wrapper_func_46,
+        wrapper_func_47,
+        wrapper_func_48,
+        wrapper_func_49,
+        wrapper_func_50,
+        wrapper_func_51,
+        wrapper_func_52,
+        wrapper_func_53,
+        wrapper_func_54,
+        wrapper_func_55,
+        wrapper_func_56,
+        wrapper_func_57,
+        wrapper_func_58,
+        wrapper_func_59,
+        wrapper_func_60,
+        wrapper_func_61,
+        wrapper_func_62,
+        wrapper_func_63,
+        wrapper_func_64,
+        wrapper_func_65,
+        wrapper_func_66,
+        wrapper_func_67,
+        wrapper_func_68,
+        wrapper_func_69,
+        wrapper_func_70,
+        wrapper_func_71,
+        wrapper_func_72,
+        wrapper_func_73,
+        wrapper_func_74,
+        wrapper_func_75,
+        wrapper_func_76,
+        wrapper_func_77,
+        wrapper_func_78,
+        wrapper_func_79,
+        wrapper_func_80,
+        wrapper_func_81,
+        wrapper_func_82,
+        wrapper_func_83,
+        wrapper_func_84,
+        wrapper_func_85,
+        wrapper_func_86,
+        wrapper_func_87,
+        wrapper_func_88,
+        wrapper_func_89,
+        wrapper_func_90,
+        wrapper_func_91,
+        wrapper_func_92,
+        wrapper_func_93,
+        wrapper_func_94,
+        wrapper_func_95,
+        wrapper_func_96,
+        wrapper_func_97,
+        wrapper_func_98,
+        wrapper_func_99
+    }
 };
 
 HRESULT wrap_iface(IUnknown *iface, IUnknown *ref_unk, IUnknown **ret)
@@ -326,7 +332,7 @@ HRESULT wrap_iface(IUnknown *iface, IUnknown *ref_unk, IUnknown **ret)
     if(!wrapper)
         return E_OUTOFMEMORY;
 
-    wrapper->IUnknown_iface.lpVtbl = (const IUnknownVtbl*)wrapper_vtbl;
+    wrapper->IUnknown_iface.lpVtbl = &wrapper_vtbl.unk_vtbl;
     wrapper->ref = 1;
 
     IUnknown_AddRef(iface);




More information about the wine-cvs mailing list