Jacek Caban : jscript: Use already running interpreter for Function.apply( ) execution.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Mar 30 10:00:30 CDT 2016
Module: wine
Branch: master
Commit: 813609b8436b09373529652795856937e46b0e73
URL: http://source.winehq.org/git/wine.git/?a=commit;h=813609b8436b09373529652795856937e46b0e73
Author: Jacek Caban <jacek at codeweavers.com>
Date: Tue Mar 29 17:49:28 2016 +0200
jscript: Use already running interpreter for Function.apply() execution.
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/jscript/dispex.c | 3 ++-
dlls/jscript/function.c | 8 ++++----
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c
index 5abb3a7..4f5a35f 100644
--- a/dlls/jscript/dispex.c
+++ b/dlls/jscript/dispex.c
@@ -377,7 +377,8 @@ static HRESULT invoke_prop_func(jsdisp_t *This, IDispatch *jsthis, dispex_prop_t
if(prop->name || This->builtin_info->class != JSCLASS_FUNCTION) {
vdisp_t vthis;
- flags &= ~DISPATCH_JSCRIPT_INTERNAL_MASK;
+ if(This->builtin_info->class != JSCLASS_FUNCTION)
+ flags &= ~DISPATCH_JSCRIPT_INTERNAL_MASK;
if(jsthis)
set_disp(&vthis, jsthis);
else
diff --git a/dlls/jscript/function.c b/dlls/jscript/function.c
index 617d835..45d5bab 100644
--- a/dlls/jscript/function.c
+++ b/dlls/jscript/function.c
@@ -274,12 +274,12 @@ static HRESULT invoke_value_proc(script_ctx_t *ctx, FunctionInstance *function,
}
static HRESULT call_function(script_ctx_t *ctx, FunctionInstance *function, IDispatch *this_obj,
- unsigned argc, jsval_t *argv, jsval_t *r)
+ unsigned argc, jsval_t *argv, BOOL caller_execs_source, jsval_t *r)
{
if(function->value_proc)
return invoke_value_proc(ctx, function, this_obj, DISPATCH_METHOD, argc, argv, r);
- return invoke_source(ctx, function, this_obj, argc, argv, FALSE, FALSE, r);
+ return invoke_source(ctx, function, this_obj, argc, argv, FALSE, caller_execs_source, r);
}
static HRESULT function_to_string(FunctionInstance *function, jsstr_t **ret)
@@ -459,7 +459,7 @@ static HRESULT Function_apply(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, un
}
if(SUCCEEDED(hres))
- hres = call_function(ctx, function, this_obj, cnt, args, r);
+ hres = call_function(ctx, function, this_obj, cnt, args, (flags & DISPATCH_JSCRIPT_CALLEREXECSSOURCE) != 0, r);
if(this_obj)
IDispatch_Release(this_obj);
@@ -492,7 +492,7 @@ static HRESULT Function_call(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags, uns
cnt = argc-1;
}
- hres = call_function(ctx, function, this_obj, cnt, argv+1, r);
+ hres = call_function(ctx, function, this_obj, cnt, argv+1, FALSE, r);
if(this_obj)
IDispatch_Release(this_obj);
More information about the wine-cvs
mailing list