Jacek Caban : jscript: Allow this_obj to be host object in call_function.
Alexandre Julliard
julliard at winehq.org
Wed Sep 23 11:03:57 CDT 2009
Module: wine
Branch: master
Commit: 37c2d43e28ec5f3188dbdf2c0866dbf1b41315b4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=37c2d43e28ec5f3188dbdf2c0866dbf1b41315b4
Author: Jacek Caban <jacek at codeweavers.com>
Date: Wed Sep 23 16:19:29 2009 +0200
jscript: Allow this_obj to be host object in call_function.
---
dlls/jscript/function.c | 14 ++++----------
dlls/jscript/tests/run.c | 4 ++++
2 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/dlls/jscript/function.c b/dlls/jscript/function.c
index e68222b..74c4e47 100644
--- a/dlls/jscript/function.c
+++ b/dlls/jscript/function.c
@@ -281,21 +281,15 @@ static HRESULT call_function(script_ctx_t *ctx, FunctionInstance *function, IDis
HRESULT hres;
if(function->value_proc) {
- DispatchEx *jsthis = NULL;
vdisp_t vthis;
- if(this_obj) {
- jsthis = iface_to_jsdisp((IUnknown*)this_obj);
- if(!jsthis)
- FIXME("this_obj is not DispatchEx\n");
- }
+ if(this_obj)
+ set_disp(&vthis, this_obj);
+ else
+ set_jsdisp(&vthis, ctx->script_disp);
- set_jsdisp(&vthis, jsthis ? jsthis : ctx->script_disp);
hres = function->value_proc(ctx, &vthis, DISPATCH_METHOD, args, retv, ei, caller);
vdisp_release(&vthis);
-
- if(jsthis)
- jsdisp_release(jsthis);
}else {
hres = invoke_source(ctx, function, this_obj ? this_obj : (IDispatch*)_IDispatchEx_(ctx->script_disp),
args, retv, ei, caller);
diff --git a/dlls/jscript/tests/run.c b/dlls/jscript/tests/run.c
index 786624c..1cfee4f 100644
--- a/dlls/jscript/tests/run.c
+++ b/dlls/jscript/tests/run.c
@@ -912,6 +912,10 @@ static void run_tests(void)
parse_script_a("ok(String(testObj) === '1', 'wrong testObj value');");
CHECK_CALLED(testobj_value);
+ SET_EXPECT(testobj_value);
+ parse_script_a("ok(String.prototype.concat.call(testObj, ' OK') === '1 OK', 'wrong concat result');");
+ CHECK_CALLED(testobj_value);
+
run_from_res("lang.js");
run_from_res("api.js");
run_from_res("regexp.js");
More information about the wine-cvs
mailing list