On Tue, 30 Nov 2004 16:32:59 +0900, Mike McCormack mike@codeweavers.com wrote:
James Hawkins wrote:
Ignoring the change that I made, what is wrong with the current code? I kindof figured that pstream was tied into ppv, but I wanted to make sure. If that is the case, then my acmstream patch should be ignored as well. I thought to call LocalFree on pstream because it was allocated with LocalAlloc. Can you explain what should be written instead so I don't make the same mistake?
Actually, the current code will work correctly. My nitpick is only that you should use Release() instead of free() on an interface pointer.
Mike
Index: dlls/avifil32/acmstream.c
RCS file: /home/wine/wine/dlls/avifil32/acmstream.c,v retrieving revision 1.14 diff -u -r1.14 acmstream.c --- dlls/avifil32/acmstream.c 5 Oct 2004 18:10:21 -0000 1.14 +++ dlls/avifil32/acmstream.c 30 Nov 2004 08:21:29 -0000 @@ -118,10 +118,10 @@ return AVIERR_MEMORY;
pstream->lpVtbl = &iacmst;
pstream->ref = 1;
hr = IAVIStream_QueryInterface((IAVIStream*)pstream, riid, ppv);
- if (FAILED(hr))
- LocalFree((HLOCAL)pstream);
IAVIStream_Release((IAVIStream*)pstream);
return hr;
}
I just want to make sure I've got this. Do we want to release even if the call to QueryInterface suceeds?