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