Jacek Caban : jscript: Add DISPATCH_PROPERTYGET flag only for DISPATCH_METHOD call in disp_call_value.
Alexandre Julliard
julliard at wine.codeweavers.com
Tue Sep 16 14:36:42 CDT 2014
Module: wine
Branch: master
Commit: 02406d4fd4d55a9ef3950f2ba3932088b2fcbac5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=02406d4fd4d55a9ef3950f2ba3932088b2fcbac5
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Sep 16 20:42:33 2014 +0200
jscript: Add DISPATCH_PROPERTYGET flag only for DISPATCH_METHOD call in disp_call_value.
Spotted by Qian Hong.
---
dlls/jscript/dispex.c | 2 +-
dlls/jscript/tests/run.c | 9 +++++++++
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c
index 347e7e1..604bd26 100644
--- a/dlls/jscript/dispex.c
+++ b/dlls/jscript/dispex.c
@@ -1202,7 +1202,7 @@ HRESULT disp_call_value(script_ctx_t *ctx, IDispatch *disp, IDispatch *jsthis, W
return hres;
}
- if(r && argc)
+ if(r && argc && flags == DISPATCH_METHOD)
flags |= DISPATCH_PROPERTYGET;
hres = IDispatch_QueryInterface(disp, &IID_IDispatchEx, (void**)&dispex);
diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c
index f6d600a..b8edd7d 100644
--- a/dlls/jscript/tests/run.c
+++ b/dlls/jscript/tests/run.c
@@ -95,6 +95,7 @@ DEFINE_EXPECT(dispexfunc_value);
DEFINE_EXPECT(testobj_delete_test);
DEFINE_EXPECT(testobj_delete_nodelete);
DEFINE_EXPECT(testobj_value);
+DEFINE_EXPECT(testobj_construct);
DEFINE_EXPECT(testobj_prop_d);
DEFINE_EXPECT(testobj_withprop_d);
DEFINE_EXPECT(testobj_withprop_i);
@@ -364,6 +365,10 @@ static HRESULT WINAPI testObj_InvokeEx(IDispatchEx *iface, DISPID id, LCID lcid,
case INVOKE_FUNC|INVOKE_PROPERTYGET:
ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
break;
+ case DISPATCH_CONSTRUCT:
+ CHECK_EXPECT(testobj_construct);
+ ok(pdp->cArgs == 1, "cArgs = %d\n", pdp->cArgs);
+ break;
default:
ok(0, "invalid flag (%x)\n", wFlags);
}
@@ -2121,6 +2126,10 @@ static BOOL run_tests(void)
parse_script_a("ok(String.prototype.concat.call(testObj, ' OK') === '1 OK', 'wrong concat result');");
CHECK_CALLED(testobj_value);
+ SET_EXPECT(testobj_construct);
+ parse_script_a("var t = new testObj(1);");
+ CHECK_CALLED(testobj_construct);
+
SET_EXPECT(global_propget_d);
SET_EXPECT(global_propget_i);
parse_script_a("this.testPropGet;");
More information about the wine-cvs
mailing list