windowscodecs: Store stream reference in png decoder.
This commit is contained in:
parent
b681123385
commit
531992c760
|
@ -296,6 +296,7 @@ typedef struct {
|
|||
IWICBitmapFrameDecode IWICBitmapFrameDecode_iface;
|
||||
IWICMetadataBlockReader IWICMetadataBlockReader_iface;
|
||||
LONG ref;
|
||||
IStream *stream;
|
||||
png_structp png_ptr;
|
||||
png_infop info_ptr;
|
||||
png_infop end_info;
|
||||
|
@ -366,6 +367,7 @@ static ULONG WINAPI PngDecoder_Release(IWICBitmapDecoder *iface)
|
|||
|
||||
if (ref == 0)
|
||||
{
|
||||
IStream_Release(This->stream);
|
||||
if (This->png_ptr)
|
||||
ppng_destroy_read_struct(&This->png_ptr, &This->info_ptr, &This->end_info);
|
||||
This->lock.DebugInfo->Spare[0] = 0;
|
||||
|
@ -605,6 +607,9 @@ static HRESULT WINAPI PngDecoder_Initialize(IWICBitmapDecoder *iface, IStream *p
|
|||
|
||||
ppng_read_end(This->png_ptr, This->end_info);
|
||||
|
||||
This->stream = pIStream;
|
||||
IStream_AddRef(This->stream);
|
||||
|
||||
This->initialized = TRUE;
|
||||
|
||||
end:
|
||||
|
|
|
@ -283,6 +283,7 @@ static IWICBitmapDecoder *create_decoder(const void *image_data, UINT image_size
|
|||
IWICBitmapDecoder *decoder = NULL;
|
||||
IStream *stream;
|
||||
GUID format;
|
||||
LONG refcount;
|
||||
|
||||
hmem = GlobalAlloc(0, image_size);
|
||||
data = GlobalLock(hmem);
|
||||
|
@ -300,7 +301,8 @@ static IWICBitmapDecoder *create_decoder(const void *image_data, UINT image_size
|
|||
ok(IsEqualGUID(&format, &GUID_ContainerFormatPng),
|
||||
"wrong container format %s\n", wine_dbgstr_guid(&format));
|
||||
|
||||
IStream_Release(stream);
|
||||
refcount = IStream_Release(stream);
|
||||
ok(refcount > 0, "expected stream refcount > 0\n");
|
||||
|
||||
return decoder;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue