[2/3] windowscodecs: Test for png codec seeking too far

Viktor Semykin thesame.ml at gmail.com
Wed Mar 29 23:12:49 CDT 2017


No, there's no such a reason. This test would pass with HGLOBAL as well. 
What should I do in this situation? Would it better to leave it as it 
used to be?


On 29/03/17 20:54, Vincent Povirk wrote:
> Is there a reason to switch to SHCreateMemStream to do this test in
> particular? If not, it would probably make more sense as a separate
> cleanup project.
>
> On Mon, Mar 27, 2017 at 3:09 PM, Viktor Semykin <thesame.ml at gmail.com> wrote:
>> Signed-off-by: Viktor Semykin <thesame.ml at gmail.com>
>> ---
>>   dlls/windowscodecs/tests/Makefile.in |  2 +-
>>   dlls/windowscodecs/tests/pngformat.c | 19 ++++++++++---------
>>   2 files changed, 11 insertions(+), 10 deletions(-)
>>
>> diff --git a/dlls/windowscodecs/tests/Makefile.in b/dlls/windowscodecs/tests/Makefile.in
>> index e11d184..e006e3d 100644
>> --- a/dlls/windowscodecs/tests/Makefile.in
>> +++ b/dlls/windowscodecs/tests/Makefile.in
>> @@ -1,5 +1,5 @@
>>   TESTDLL   = windowscodecs.dll
>> -IMPORTS   = windowscodecs oleaut32 ole32 user32 gdi32
>> +IMPORTS   = windowscodecs oleaut32 ole32 user32 gdi32 shlwapi
>>
>>   C_SRCS = \
>>          bitmap.c \
>> diff --git a/dlls/windowscodecs/tests/pngformat.c b/dlls/windowscodecs/tests/pngformat.c
>> index 34cb533..20b6e93 100644
>> --- a/dlls/windowscodecs/tests/pngformat.c
>> +++ b/dlls/windowscodecs/tests/pngformat.c
>> @@ -25,6 +25,7 @@
>>   #include "windef.h"
>>   #include "wincodec.h"
>>   #include "wine/test.h"
>> +#include "shlwapi.h"
>>
>>   /* 1x1 pixel PNG image */
>>   static const char png_no_color_profile[] = {
>> @@ -277,21 +278,16 @@ static IWICImagingFactory *factory;
>>
>>   static IWICBitmapDecoder *create_decoder(const void *image_data, UINT image_size)
>>   {
>> -    HGLOBAL hmem;
>> -    BYTE *data;
>>       HRESULT hr;
>>       IWICBitmapDecoder *decoder = NULL;
>>       IStream *stream;
>>       GUID format;
>>       LONG refcount;
>> +    ULARGE_INTEGER pos;
>> +    LARGE_INTEGER zero;
>>
>> -    hmem = GlobalAlloc(0, image_size);
>> -    data = GlobalLock(hmem);
>> -    memcpy(data, image_data, image_size);
>> -    GlobalUnlock(hmem);
>> -
>> -    hr = CreateStreamOnHGlobal(hmem, TRUE, &stream);
>> -    ok(hr == S_OK, "CreateStreamOnHGlobal error %#x\n", hr);
>> +    stream = SHCreateMemStream (image_data, image_size);
>> +    ok(stream != NULL, "SHCreateMemStream error\n");
>>
>>       hr = IWICImagingFactory_CreateDecoderFromStream(factory, stream, NULL, 0, &decoder);
>>       ok(hr == S_OK, "CreateDecoderFromStream error %#x\n", hr);
>> @@ -302,6 +298,11 @@ 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));
>>
>> +    zero.QuadPart = 0;
>> +    IStream_Seek (stream, zero, STREAM_SEEK_CUR, &pos);
>> +    todo_wine ok(pos.QuadPart < image_size, "seek beyond the end of stream: %lu >= %u\n",
>> +        pos.QuadPart, image_size);
>> +
>>       refcount = IStream_Release(stream);
>>       ok(refcount > 0, "expected stream refcount > 0\n");
>>
>> --
>> 2.12.1
>>
>>
>>

-- 
best, Viktor.




More information about the wine-devel mailing list