From: Shaun Ren <sren@codeweavers.com> Some non-conforming IStream implementations, including SharpDX, do not handle a NULL pcbRead for Read(). This causes the game "Surviving Deponia Playtest" to display a black main menu. --- dlls/windowscodecs/libjpeg.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/windowscodecs/libjpeg.c b/dlls/windowscodecs/libjpeg.c index 40119084e68..5282ae7066c 100644 --- a/dlls/windowscodecs/libjpeg.c +++ b/dlls/windowscodecs/libjpeg.c @@ -338,6 +338,7 @@ static HRESULT CDECL jpeg_decoder_get_metadata_blocks(struct decoder* iface, UIN struct decoder_block block; USHORT marker, length; ULONGLONG offset; + ULONG bytesread; BYTE header[4]; bool add_block; HRESULT hr; @@ -357,7 +358,7 @@ static HRESULT CDECL jpeg_decoder_get_metadata_blocks(struct decoder* iface, UIN memset(&results, 0, sizeof(results)); for (;;) { - if (stream_read(This->stream, header, 4, NULL) != S_OK) + if (stream_read(This->stream, header, 4, &bytesread) != S_OK || bytesread != 4) break; offset += 4; @@ -368,7 +369,7 @@ static HRESULT CDECL jpeg_decoder_get_metadata_blocks(struct decoder* iface, UIN if (marker == APP1) { /* APP1 marker might appear multiple times, it's reused for different metadata blocks. */ - if (stream_read(This->stream, header, 4, NULL) != S_OK) + if (stream_read(This->stream, header, 4, &bytesread) != S_OK || bytesread != 4) break; stream_seek(This->stream, -4, STREAM_SEEK_CUR, NULL); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11730