From 8f604e925d016a694e8f9d4ee1bf0505f409df23 Mon Sep 17 00:00:00 2001 From: Robert Shearman Date: Tue, 3 Jan 2006 12:07:34 +0100 Subject: [PATCH] ole: Fix mis-handling of return value in StgStreamImpl_Read. BlockChainStream_ReadAt returns a BOOL, not an HRESULT so change StgStreamImpl_Read to handle this, by returning STG_E_READFAULT on failure. --- dlls/ole32/stg_stream.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/dlls/ole32/stg_stream.c b/dlls/ole32/stg_stream.c index 40f0e81b93d..19b8bda5a7d 100644 --- a/dlls/ole32/stg_stream.c +++ b/dlls/ole32/stg_stream.c @@ -249,7 +249,7 @@ static HRESULT WINAPI StgStreamImpl_Read( ULONG bytesReadBuffer; ULONG bytesToReadFromBuffer; - HRESULT res = S_FALSE; + HRESULT res; TRACE("(%p, %p, %ld, %p)\n", iface, pv, cb, pcbRead); @@ -282,11 +282,15 @@ static HRESULT WINAPI StgStreamImpl_Read( } else if (This->bigBlockChain!=0) { - res = BlockChainStream_ReadAt(This->bigBlockChain, - This->currentPosition, - bytesToReadFromBuffer, - pv, - pcbRead); + BOOL success = BlockChainStream_ReadAt(This->bigBlockChain, + This->currentPosition, + bytesToReadFromBuffer, + pv, + pcbRead); + if (success) + res = S_OK; + else + res = STG_E_READFAULT; } else {