[PATCH] Removed potential reference count races
max at mtew.isa-geek.net
max at mtew.isa-geek.net
Sat Oct 27 20:59:34 CDT 2012
From: Max TenEyck Woodbury <max at mtew.isa-geek.net>
---
dlls/vbscript/vbdisp.c | 18 +++++++++---------
1 files changed, 9 insertions(+), 9 deletions(-)
diff --git a/dlls/vbscript/vbdisp.c b/dlls/vbscript/vbdisp.c
index b37caf6..fc26cd9 100644
--- a/dlls/vbscript/vbdisp.c
+++ b/dlls/vbscript/vbdisp.c
@@ -35,7 +35,7 @@ static BOOL get_func_id(vbdisp_t *This, const WCHAR *name, vbdisp_invoke_type_t
{
unsigned i;
- for(i = invoke_type == VBDISP_ANY ? 0 : 1; i < This->desc->func_cnt; i++) {
+ for(i = invoke_type == VBDISP_ANY ? 0 : 1; i < This->desc->func_cnt; ++i) {
if(invoke_type == VBDISP_ANY) {
if(!search_private && !This->desc->funcs[i].is_public)
continue;
@@ -63,7 +63,7 @@ HRESULT vbdisp_get_id(vbdisp_t *This, BSTR name, vbdisp_invoke_type_t invoke_typ
if(get_func_id(This, name, invoke_type, search_private, id))
return S_OK;
- for(i=0; i < This->desc->prop_cnt; i++) {
+ for(i=0; i < This->desc->prop_cnt; ++i) {
if(!search_private && !This->desc->props[i].is_public)
continue;
@@ -89,7 +89,7 @@ static VARIANT *get_propput_arg(const DISPPARAMS *dp)
{
unsigned i;
- for(i=0; i < dp->cNamedArgs; i++) {
+ for(i=0; i < dp->cNamedArgs; ++i) {
if(dp->rgdispidNamedArgs[i] == DISPID_PROPERTYPUT)
return dp->rgvarg+i;
}
@@ -184,7 +184,7 @@ static HRESULT invoke_builtin(vbdisp_t *This, const builtin_prop_t *prop, WORD f
assert(argn < sizeof(args)/sizeof(*args));
- for(i=0; i < argn; i++) {
+ for(i=0; i < argn; ++i) {
if(V_VT(dp->rgvarg+dp->cArgs-i-1) == (VT_BYREF|VT_VARIANT))
args[i] = *V_VARIANTREF(dp->rgvarg+dp->cArgs-i-1);
else
@@ -205,10 +205,10 @@ static BOOL run_terminator(vbdisp_t *This)
if(!This->desc->class_terminate_id)
return TRUE;
- This->ref++;
+ InterlockedIncrement(&This->ref);
exec_script(This->desc->ctx, This->desc->funcs[This->desc->class_terminate_id].entries[VBDISP_CALLGET],
(IDispatch*)&This->IDispatchEx_iface, &dp, NULL);
- return !--This->ref;
+ return !InterlockedDecrement(&This->ref);
}
static void clean_props(vbdisp_t *This)
@@ -218,7 +218,7 @@ static void clean_props(vbdisp_t *This)
if(!This->desc)
return;
- for(i=0; i < This->desc->prop_cnt; i++)
+ for(i=0; i < This->desc->prop_cnt; ++i)
VariantClear(This->props+i);
}
@@ -682,7 +682,7 @@ static HRESULT WINAPI ScriptDisp_GetIDsOfNames(IDispatchEx *iface, REFIID riid,
TRACE("(%p)->(%s %p %u %u %p)\n", This, debugstr_guid(riid), rgszNames, cNames,
lcid, rgDispId);
- for(i=0; i < cNames; i++) {
+ for(i=0; i < cNames; ++i) {
hres = IDispatchEx_GetDispID(&This->IDispatchEx_iface, rgszNames[i], 0, rgDispId+i);
if(FAILED(hres))
return hres;
@@ -715,7 +715,7 @@ static HRESULT WINAPI ScriptDisp_GetDispID(IDispatchEx *iface, BSTR bstrName, DW
if(!This->ctx)
return E_UNEXPECTED;
- for(ident = This->ident_map; ident < This->ident_map+This->ident_map_cnt; ident++) {
+ for(ident = This->ident_map; ident < This->ident_map+This->ident_map_cnt; ++ident) {
if(!strcmpiW(ident->name, bstrName)) {
*pid = ident_to_id(This, ident);
return S_OK;
--
1.7.7.6
More information about the wine-patches
mailing list