[PATCH] Remove potential reference count races
max at mtew.isa-geek.net
max at mtew.isa-geek.net
Sat Oct 27 20:59:24 CDT 2012
From: Max TenEyck Woodbury <max at mtew.isa-geek.net>
---
dlls/krnl386.exe16/atom.c | 10 +++++-----
1 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/dlls/krnl386.exe16/atom.c b/dlls/krnl386.exe16/atom.c
index 0c52f1f..234c4b7 100644
--- a/dlls/krnl386.exe16/atom.c
+++ b/dlls/krnl386.exe16/atom.c
@@ -108,7 +108,7 @@ static WORD ATOM_Hash(
TRACE("%x, %s, %x\n", entries, str, len);
- for (i = 0; i < len; i++) hash ^= toupper(str[i]) + i;
+ for (i = 0; i < len; ++i) hash ^= toupper(str[i]) + i;
return hash % entries;
}
@@ -126,7 +126,7 @@ static BOOL ATOM_IsIntAtomA(LPCSTR atomstr,WORD *atomid)
while (*atomstr >= '0' && *atomstr <= '9')
{
atom = atom * 10 + *atomstr - '0';
- atomstr++;
+ ++atomstr;
}
if (*atomstr) return FALSE;
}
@@ -167,7 +167,7 @@ WORD WINAPI InitAtomTable16( WORD entries )
if (!handle) return 0;
table = MapSL( MAKESEGPTR( CURRENT_DS, handle ) );
table->size = entries;
- for (i = 0; i < entries; i++) table->entries[i] = 0;
+ for (i = 0; i < entries; ++i) table->entries[i] = 0;
/* Store a pointer to the table in the instance data */
@@ -225,7 +225,7 @@ ATOM WINAPI AddAtom16( LPCSTR str )
if ((entryPtr->length == len) &&
(!strncasecmp( entryPtr->str, buffer, len )))
{
- entryPtr->refCount++;
+ InterlockedIncrement(&entryPtr->refCount);
TRACE("-- existing 0x%x\n", entry);
return HANDLETOATOM( entry );
}
@@ -280,7 +280,7 @@ ATOM WINAPI DeleteAtom16( ATOM atom )
if (!*prevEntry) return atom;
/* Delete atom */
- if (--entryPtr->refCount == 0)
+ if (InterlockedDecrement(&entryPtr->refCount) == 0)
{
*prevEntry = entryPtr->next;
LocalFree16( entry );
--
1.7.7.6
More information about the wine-patches
mailing list