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

Vincent Povirk madewokherd at gmail.com
Thu Mar 30 01:57:08 CDT 2017


I think you should either split the patch, or leave it using HGLOBAL.

On Wed, Mar 29, 2017 at 11:12 PM, Viktor Semykin <thesame.ml at gmail.com> wrote:
> 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