Module: wine Branch: master Commit: efc59d1b19cff5b5e5ab184b7717defcf968c9a5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=efc59d1b19cff5b5e5ab184b77... Author: Jacek Caban <jacek(a)codeweavers.com> Date: Thu Sep 15 14:18:43 2011 +0200 vbscript: Store class_desc_t in vbdisp_t. --- dlls/vbscript/interp.c | 2 +- dlls/vbscript/vbdisp.c | 6 ++++-- dlls/vbscript/vbscript.h | 5 ++++- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c index 04ed81d..b413243 100644 --- a/dlls/vbscript/interp.c +++ b/dlls/vbscript/interp.c @@ -463,7 +463,7 @@ static HRESULT interp_new(exec_ctx_t *ctx) return E_FAIL; } - hres = create_vbdisp(&obj); + hres = create_vbdisp(class_desc, &obj); if(FAILED(hres)) return hres; diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c index 73006be..f1a323d 100644 --- a/dlls/vbscript/vbdisp.c +++ b/dlls/vbscript/vbdisp.c @@ -184,7 +184,7 @@ static IDispatchExVtbl DispatchExVtbl = { DispatchEx_GetNameSpaceParent }; -HRESULT create_vbdisp(vbdisp_t **ret) +HRESULT create_vbdisp(const class_desc_t *desc, vbdisp_t **ret) { vbdisp_t *vbdisp; @@ -194,6 +194,7 @@ HRESULT create_vbdisp(vbdisp_t **ret) vbdisp->IDispatchEx_iface.lpVtbl = &DispatchExVtbl; vbdisp->ref = 1; + vbdisp->desc = desc; *ret = vbdisp; return S_OK; @@ -201,7 +202,8 @@ HRESULT create_vbdisp(vbdisp_t **ret) HRESULT init_global(script_ctx_t *ctx) { - return create_vbdisp(&ctx->script_obj); + ctx->script_desc.ctx = ctx; + return create_vbdisp(&ctx->script_desc, &ctx->script_obj); } HRESULT disp_get_id(IDispatch *disp, BSTR name, DISPID *id) diff --git a/dlls/vbscript/vbscript.h b/dlls/vbscript/vbscript.h index 9e77714..dabf52b 100644 --- a/dlls/vbscript/vbscript.h +++ b/dlls/vbscript/vbscript.h @@ -65,6 +65,8 @@ typedef struct { IDispatchEx IDispatchEx_iface; LONG ref; + + const class_desc_t *desc; } vbdisp_t; typedef enum { @@ -74,7 +76,7 @@ typedef enum { VBDISP_ANY } vbdisp_invoke_type_t; -HRESULT create_vbdisp(vbdisp_t**); +HRESULT create_vbdisp(const class_desc_t*,vbdisp_t**); HRESULT disp_get_id(IDispatch*,BSTR,DISPID*); HRESULT disp_call(script_ctx_t*,IDispatch*,DISPID,DISPPARAMS*,VARIANT*); HRESULT disp_propput(script_ctx_t*,IDispatch*,DISPID,VARIANT*); @@ -101,6 +103,7 @@ struct _script_ctx_t { IDispatch *host_global; + class_desc_t script_desc; vbdisp_t *script_obj; dynamic_var_t *global_vars;