Module: wine Branch: master Commit: efc59d1b19cff5b5e5ab184b7717defcf968c9a5 URL: http://source.winehq.org/git/wine.git/?a=commit;h=efc59d1b19cff5b5e5ab184b77...
Author: Jacek Caban jacek@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;