[PATCH] wincodecs: Grab TIFF decoder reference when creating frames.
Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> --- dlls/windowscodecs/tiffformat.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dlls/windowscodecs/tiffformat.c b/dlls/windowscodecs/tiffformat.c index 966ab3eb4b..3cb2ebc16c 100644 --- a/dlls/windowscodecs/tiffformat.c +++ b/dlls/windowscodecs/tiffformat.c @@ -766,6 +766,7 @@ static HRESULT WINAPI TiffDecoder_GetFrame(IWICBitmapDecoder *iface, result->IWICMetadataBlockReader_iface.lpVtbl = &TiffFrameDecode_BlockVtbl; result->ref = 1; result->parent = This; + IWICBitmapDecoder_AddRef(iface); result->index = index; result->decode_info = decode_info; result->cached_tile_x = -1; @@ -776,7 +777,7 @@ static HRESULT WINAPI TiffDecoder_GetFrame(IWICBitmapDecoder *iface, else { hr = E_OUTOFMEMORY; - HeapFree(GetProcessHeap(), 0, result); + IWICBitmapFrameDecode_Release(&result->IWICBitmapFrameDecode_iface); } } else hr = E_OUTOFMEMORY; @@ -851,6 +852,7 @@ static ULONG WINAPI TiffFrameDecode_Release(IWICBitmapFrameDecode *iface) if (ref == 0) { + IWICBitmapDecoder_Release(&This->parent->IWICBitmapDecoder_iface); HeapFree(GetProcessHeap(), 0, This->cached_tile); HeapFree(GetProcessHeap(), 0, This); } -- 2.19.1
Nikolay Sivov <nsivov(a)codeweavers.com> wrote:
--- a/dlls/windowscodecs/tiffformat.c +++ b/dlls/windowscodecs/tiffformat.c @@ -766,6 +766,7 @@ static HRESULT WINAPI TiffDecoder_GetFrame(IWICBitmapDecoder *iface, result->IWICMetadataBlockReader_iface.lpVtbl = &TiffFrameDecode_BlockVtbl; result->ref = 1; result->parent = This; + IWICBitmapDecoder_AddRef(iface);
It should be possible to add a test case for this. -- Dmitry.
participants (2)
-
Dmitry Timoshkov -
Nikolay Sivov