shlwapi: Fix IStream::Read() return value for partial reads.
Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru> Signed-off-by: Sebastian Lackner <sebastian@fds-team.de> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
20651c7dfe
commit
860f5562c7
|
@ -130,7 +130,7 @@ static HRESULT WINAPI IStream_fnRead(IStream *iface, void* pv, ULONG cb, ULONG*
|
|||
}
|
||||
if (pcbRead)
|
||||
*pcbRead = dwRead;
|
||||
return S_OK;
|
||||
return dwRead == cb ? S_OK : S_FALSE;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
|
|
@ -247,11 +247,24 @@ static void test_stream_read_write(IStream *stream, DWORD mode)
|
|||
}
|
||||
else
|
||||
{
|
||||
todo_wine
|
||||
ok(ret == S_FALSE, "expected S_FALSE, got %#x (access %#x, written %u)\n", ret, mode, written);
|
||||
ok(count == 0, "expected 0, got %u\n", count);
|
||||
}
|
||||
|
||||
ret = stream->lpVtbl->Seek(stream, start, STREAM_SEEK_SET, NULL);
|
||||
ok(ret == S_OK, "Seek error %#x\n", ret);
|
||||
|
||||
count = 0xdeadbeaf;
|
||||
ret = stream->lpVtbl->Read(stream, buf, 0, &count);
|
||||
ok(ret == S_OK, "IStream_Read error %#x (access %#x, written %u)\n", ret, mode, written);
|
||||
ok(count == 0, "expected 0, got %u\n", count);
|
||||
|
||||
count = 0xdeadbeaf;
|
||||
ret = stream->lpVtbl->Read(stream, buf, sizeof(buf), &count);
|
||||
ok(ret == S_FALSE, "expected S_FALSE, got %#x (access %#x, written %u)\n", ret, mode, written);
|
||||
ok(count == written, "expected %u, got %u\n", written, count);
|
||||
if (count)
|
||||
ok(buf[0] == 0x5e && buf[1] == 0xa7, "expected 5ea7, got %02x%02x\n", buf[0], buf[1]);
|
||||
}
|
||||
|
||||
static void test_SHCreateStreamOnFileA(DWORD mode, DWORD stgm)
|
||||
|
|
Loading…
Reference in New Issue