Jacek Caban : vbscript: Store class_desc_t in vbdisp_t.

Alexandre Julliard julliard at winehq.org
Thu Sep 15 12:34:54 CDT 2011


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

Author: Jacek Caban <jacek at 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;




More information about the wine-cvs mailing list