James Hawkins wrote:
Changelog
- use InterlockedDecrement and InterlockedIncrement instead of ++/--
Index: dlls/avifil32/avifile.c
RCS file: /home/wine/wine/dlls/avifil32/avifile.c,v retrieving revision 1.48 diff -u -r1.48 avifile.c --- dlls/avifil32/avifile.c 6 Sep 2004 21:34:26 -0000 1.48 +++ dlls/avifil32/avifile.c 16 Sep 2004 01:48:46 -0000 @@ -284,7 +284,7 @@ IAVIFileImpl *This = (IAVIFileImpl *)iface;
TRACE("(%p) -> %ld\n", iface, This->ref + 1);
- return ++(This->ref);
- return InterlockedIncrement(&This->ref);
}
static ULONG WINAPI IAVIFile_fnRelease(IAVIFile *iface) @@ -294,7 +294,7 @@
TRACE("(%p) -> %ld\n", iface, This->ref - 1);
- if (!--(This->ref)) {
- if (!InterlockedDecrement(&This->ref)) {
A small nitpick, but the correct way implement the Release function is this: ULONG uRefs = InterlockedDecrement(&This->ref); if (!uRefs) /* Free stuff */ return uRefs;
if (This->fDirty) { /* need to write headers to file */ AVIFILE_SaveFile(This);
@@ -743,7 +743,7 @@ if (This->paf != NULL) IAVIFile_AddRef((PAVIFILE)This->paf);
- return ++(This->ref);
- return InterlockedIncrement(&This->ref);
}
static ULONG WINAPI IAVIStream_fnRelease(IAVIStream* iface) @@ -758,7 +758,7 @@ return 0; }
- This->ref--;
InterlockedDecrement(&This->ref);
if (This->paf != NULL) IAVIFile_Release((PAVIFILE)This->paf);