Hi,
during my code cleanup I came to acmstream.c and found the following:
static ULONG WINAPI ACMStream_fnAddRef(IAVIStream *iface) { IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
TRACE("(%p) -> %ld\n", iface, This->ref + 1);
/* also add reference to the nested stream */ if (This->pStream != NULL) IAVIStream_AddRef(This->pStream);
return ++(This->ref); }
the AddRef can be cleaned up.
the Release however looks buggy:
static ULONG WINAPI ACMStream_fnRelease(IAVIStream* iface) { IAVIStreamImpl *This = (IAVIStreamImpl *)iface;
TRACE("(%p) -> %ld\n", iface, This->ref - 1);
if (This->ref == 0) { /* destruct */
This means I have to do a Release twice before it actually goes into the if statement, because the decrementing takes place at the end of the Release function.
Can anybody confirm my finding.
Cheers,
Paul.