Jacek Caban : vbscript: Use default object value for objets in stack_pop_val.
Alexandre Julliard
julliard at winehq.org
Fri Sep 16 13:28:32 CDT 2011
Module: wine
Branch: master
Commit: 603d053512c50036869c20df7f2034338efcb3dd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=603d053512c50036869c20df7f2034338efcb3dd
Author: Jacek Caban <jacek at codeweavers.com>
Date: Fri Sep 16 13:29:02 2011 +0200
vbscript: Use default object value for objets in stack_pop_val.
---
dlls/vbscript/interp.c | 13 +++++++++++--
dlls/vbscript/tests/lang.vbs | 9 +++++++++
2 files changed, 20 insertions(+), 2 deletions(-)
diff --git a/dlls/vbscript/interp.c b/dlls/vbscript/interp.c
index 4599cbf..474957c 100644
--- a/dlls/vbscript/interp.c
+++ b/dlls/vbscript/interp.c
@@ -199,8 +199,17 @@ static HRESULT stack_pop_val(exec_ctx_t *ctx, variant_val_t *v)
}
if(V_VT(var) == VT_DISPATCH) {
- FIXME("got dispatch - get its default value\n");
- return E_NOTIMPL;
+ DISPPARAMS dp = {0};
+ HRESULT hres;
+
+ hres = disp_call(ctx->script, V_DISPATCH(var), DISPID_VALUE, &dp, &v->store);
+ if(v->owned)
+ IDispatch_Release(V_DISPATCH(var));
+ if(FAILED(hres))
+ return hres;
+
+ v->owned = TRUE;
+ v->v = &v->store;
}else {
v->v = var;
}
diff --git a/dlls/vbscript/tests/lang.vbs b/dlls/vbscript/tests/lang.vbs
index 24bfecc..cb0c7eb 100644
--- a/dlls/vbscript/tests/lang.vbs
+++ b/dlls/vbscript/tests/lang.vbs
@@ -473,4 +473,13 @@ Call ok(obj.getPrivateProp = 3, "obj.getPrivateProp = " & obj.getPrivateProp)
Set obj.gsProp = New testclass
Call ok(funcCalled = "gsProp set", "funcCalled = " & funcCalled)
+x = obj
+Call ok(x = 3, "(x = obj) = " & x)
+Call ok(funcCalled = "GetDefVal", "funcCalled = " & funcCalled)
+funcCalled = ""
+Call ok(obj = 3, "(x = obj) = " & obj)
+Call ok(funcCalled = "GetDefVal", "funcCalled = " & funcCalled)
+
+x = (New testclass).publicProp
+
reportSuccess()
More information about the wine-cvs
mailing list