Module: wine Branch: master Commit: 101de22a1a09643c43cd01e281a9fdf926b03535 URL: http://source.winehq.org/git/wine.git/?a=commit;h=101de22a1a09643c43cd01e281...
Author: Vincent Povirk vincent@codeweavers.com Date: Wed Aug 25 14:55:21 2010 -0500
ole32: Flush before returning from any storage API call that writes.
---
dlls/ole32/stg_stream.c | 7 +++++++ dlls/ole32/storage32.c | 12 ++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-)
diff --git a/dlls/ole32/stg_stream.c b/dlls/ole32/stg_stream.c index 1fdb963..b09ba5b 100644 --- a/dlls/ole32/stg_stream.c +++ b/dlls/ole32/stg_stream.c @@ -295,6 +295,9 @@ static HRESULT WINAPI StgStreamImpl_Write( */ This->currentPosition.u.LowPart += *pcbWritten;
+ if (SUCCEEDED(res)) + res = StorageBaseImpl_Flush(This->parentStorage); + TRACE("<-- S_OK, written %u\n", *pcbWritten); return res; } @@ -417,6 +420,10 @@ static HRESULT WINAPI StgStreamImpl_SetSize( }
hr = StorageBaseImpl_StreamSetSize(This->parentStorage, This->dirEntry, libNewSize); + + if (SUCCEEDED(hr)) + hr = StorageBaseImpl_Flush(This->parentStorage); + return hr; }
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 185b8b0..21cac58 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -856,7 +856,7 @@ static HRESULT WINAPI StorageBaseImpl_RenameElement( return STG_E_FILENOTFOUND; }
- return S_OK; + return StorageBaseImpl_Flush(This); }
/************************************************************************ @@ -1011,7 +1011,7 @@ static HRESULT WINAPI StorageBaseImpl_CreateStream( return STG_E_INSUFFICIENTMEMORY; }
- return S_OK; + return StorageBaseImpl_Flush(This); }
/************************************************************************ @@ -1047,6 +1047,9 @@ static HRESULT WINAPI StorageBaseImpl_SetClass( ¤tEntry); }
+ if (SUCCEEDED(hRes)) + hRes = StorageBaseImpl_Flush(This); + return hRes; }
@@ -1203,6 +1206,8 @@ static HRESULT WINAPI StorageBaseImpl_CreateStorage( return hr; }
+ if (SUCCEEDED(hr)) + hr = StorageBaseImpl_Flush(This);
return S_OK; } @@ -1916,6 +1921,9 @@ static HRESULT WINAPI StorageBaseImpl_DestroyElement( if (SUCCEEDED(hr)) StorageBaseImpl_DestroyDirEntry(This, entryToDeleteRef);
+ if (SUCCEEDED(hr)) + hr = StorageBaseImpl_Flush(This); + return hr; }