Module: wine Branch: master Commit: f4ef7ff48ae9b5decaddd5f2be9856466bfe01af URL: http://source.winehq.org/git/wine.git/?a=commit;h=f4ef7ff48ae9b5decaddd5f2be...
Author: Vincent Povirk vincent@codeweavers.com Date: Mon Jan 10 17:13:02 2011 -0600
windowscodecs: Accept failure when seeking to the start of a TGA footer.
---
dlls/windowscodecs/tgaformat.c | 31 +++++++++++++++++++------------ 1 files changed, 19 insertions(+), 12 deletions(-)
diff --git a/dlls/windowscodecs/tgaformat.c b/dlls/windowscodecs/tgaformat.c index 14510cf..8db1cf1 100644 --- a/dlls/windowscodecs/tgaformat.c +++ b/dlls/windowscodecs/tgaformat.c @@ -284,25 +284,32 @@ static HRESULT WINAPI TgaDecoder_Initialize(IWICBitmapDecoder *iface, IStream *p /* Read footer if there is one */ seek.QuadPart = -sizeof(tga_footer); hr = IStream_Seek(pIStream, seek, STREAM_SEEK_END, NULL); - if (FAILED(hr)) goto end;
- hr = IStream_Read(pIStream, &footer, sizeof(tga_footer), &bytesread); - if (SUCCEEDED(hr) && bytesread != sizeof(tga_footer)) - { - TRACE("got only %u footer bytes\n", bytesread); - hr = E_FAIL; - } - if (FAILED(hr)) goto end; + if (SUCCEEDED(hr)) { + hr = IStream_Read(pIStream, &footer, sizeof(tga_footer), &bytesread); + if (SUCCEEDED(hr) && bytesread != sizeof(tga_footer)) + { + TRACE("got only %u footer bytes\n", bytesread); + hr = E_FAIL; + }
- if (memcmp(footer.magic, tga_footer_magic, sizeof(tga_footer_magic)) == 0) - { - This->extension_area_offset = footer.extension_area_offset; - This->developer_directory_offset = footer.developer_directory_offset; + if (memcmp(footer.magic, tga_footer_magic, sizeof(tga_footer_magic)) == 0) + { + This->extension_area_offset = footer.extension_area_offset; + This->developer_directory_offset = footer.developer_directory_offset; + } + else + { + This->extension_area_offset = 0; + This->developer_directory_offset = 0; + } } else { + /* File is too small to have a footer. */ This->extension_area_offset = 0; This->developer_directory_offset = 0; + hr = S_OK; }
if (This->extension_area_offset)