Module: wine Branch: master Commit: f46f9261349e121d1d9a1dfb366083d90eefefc7 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f46f9261349e121d1d9a1dfb36...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Sep 7 15:42:34 2010 +0200
jscript: Addd jsdisp_addref helper function.
---
dlls/jscript/array.c | 6 +++--- dlls/jscript/dispex.c | 4 ++-- dlls/jscript/engine.c | 4 ++-- dlls/jscript/function.c | 2 +- dlls/jscript/global.c | 2 +- dlls/jscript/jscript.h | 5 +++++ 6 files changed, 14 insertions(+), 9 deletions(-)
diff --git a/dlls/jscript/array.c b/dlls/jscript/array.c index f267b38..99127d4 100644 --- a/dlls/jscript/array.c +++ b/dlls/jscript/array.c @@ -506,8 +506,8 @@ static HRESULT Array_reverse(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, DISP }
if(retv) { + jsdisp_addref(jsthis); var_set_jsdisp(retv, jsthis); - IDispatch_AddRef(V_DISPATCH(retv)); }
return S_OK; @@ -745,8 +745,8 @@ static HRESULT Array_sort(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, DISPPAR if(cmp_func) jsdisp_release(cmp_func); if(retv) { + jsdisp_addref(jsthis); var_set_jsdisp(retv, jsthis); - IDispatch_AddRef(V_DISPATCH(retv)); } return S_OK; } @@ -850,8 +850,8 @@ static HRESULT Array_sort(script_ctx_t *ctx, vdisp_t *vthis, WORD flags, DISPPAR return hres;
if(retv) { + jsdisp_addref(jsthis); var_set_jsdisp(retv, jsthis); - IDispatch_AddRef(V_DISPATCH(retv)); }
return S_OK; diff --git a/dlls/jscript/dispex.c b/dlls/jscript/dispex.c index be8967a..368cb6e 100644 --- a/dlls/jscript/dispex.c +++ b/dlls/jscript/dispex.c @@ -437,7 +437,7 @@ static HRESULT WINAPI DispatchEx_QueryInterface(IDispatchEx *iface, REFIID riid, *ppv = _IDispatchEx_(This); }else if(IsEqualGUID(&IID_IDispatchJS, riid)) { TRACE("(%p)->(IID_IDispatchJS %p)\n", This, ppv); - IUnknown_AddRef(_IDispatchEx_(This)); + jsdisp_addref(This); *ppv = This; return S_OK; }else { @@ -755,7 +755,7 @@ HRESULT init_dispex(jsdisp_t *dispex, script_ctx_t *ctx, const builtin_info_t *b
dispex->prototype = prototype; if(prototype) - IDispatchEx_AddRef(_IDispatchEx_(prototype)); + jsdisp_addref(prototype);
dispex->prop_cnt = 1; dispex->props[0].name = NULL; diff --git a/dlls/jscript/engine.c b/dlls/jscript/engine.c index 4bd4bfd..8aed4db 100644 --- a/dlls/jscript/engine.c +++ b/dlls/jscript/engine.c @@ -143,7 +143,7 @@ HRESULT scope_push(scope_chain_t *scope, jsdisp_t *obj, scope_chain_t **ret)
new_scope->ref = 1;
- IDispatchEx_AddRef(_IDispatchEx_(obj)); + jsdisp_addref(obj); new_scope->obj = obj;
if(scope) { @@ -197,7 +197,7 @@ HRESULT create_exec_ctx(script_ctx_t *script_ctx, IDispatch *this_obj, jsdisp_t ctx->this_obj = to_disp(script_ctx->global); IDispatch_AddRef(ctx->this_obj);
- IDispatchEx_AddRef(_IDispatchEx_(var_disp)); + jsdisp_addref(var_disp); ctx->var_disp = var_disp;
if(scope) { diff --git a/dlls/jscript/function.c b/dlls/jscript/function.c index 56cd2b2..2bcc918 100644 --- a/dlls/jscript/function.c +++ b/dlls/jscript/function.c @@ -547,7 +547,7 @@ static HRESULT Function_arguments(script_ctx_t *ctx, vdisp_t *jsthis, WORD flags switch(flags) { case DISPATCH_PROPERTYGET: { if(function->arguments) { - IDispatchEx_AddRef(_IDispatchEx_(function->arguments)); + jsdisp_addref(function->arguments); var_set_jsdisp(retv, function->arguments); }else { V_VT(retv) = VT_NULL; diff --git a/dlls/jscript/global.c b/dlls/jscript/global.c index eef57c4..21d9201 100644 --- a/dlls/jscript/global.c +++ b/dlls/jscript/global.c @@ -112,8 +112,8 @@ static HRESULT constructor_call(jsdisp_t *constr, WORD flags, DISPPARAMS *dp, if(flags != DISPATCH_PROPERTYGET) return jsdisp_call_value(constr, flags, dp, retv, ei, sp);
+ jsdisp_addref(constr); var_set_jsdisp(retv, constr); - IDispatchEx_AddRef(_IDispatchEx_(constr)); return S_OK; }
diff --git a/dlls/jscript/jscript.h b/dlls/jscript/jscript.h index 5ed7e8f..e9318e5 100644 --- a/dlls/jscript/jscript.h +++ b/dlls/jscript/jscript.h @@ -192,6 +192,11 @@ static inline IDispatch *to_disp(jsdisp_t *jsdisp) return (IDispatch*)&jsdisp->lpIDispatchExVtbl; }
+static inline void jsdisp_addref(jsdisp_t *jsdisp) +{ + IDispatchEx_AddRef(_IDispatchEx_(jsdisp)); +} + static inline void jsdisp_release(jsdisp_t *jsdisp) { IDispatchEx_Release(_IDispatchEx_(jsdisp));