Module: wine Branch: master Commit: ca2e0c5e70da6c933ddc7d7f0a4ab7f536191cbd URL: http://source.winehq.org/git/wine.git/?a=commit;h=ca2e0c5e70da6c933ddc7d7f0a...
Author: Jacek Caban jacek@codeweavers.com Date: Wed Sep 14 12:48:36 2016 +0200
mshtml: Use IUnknownVtbl in wrapper_vtbl.
Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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);