Vincent Povirk : ole32: Flush before returning from any storage API call that writes.
Alexandre Julliard
julliard at winehq.org
Thu Aug 26 11:42:06 CDT 2010
Module: wine
Branch: master
Commit: 101de22a1a09643c43cd01e281a9fdf926b03535
URL: http://source.winehq.org/git/wine.git/?a=commit;h=101de22a1a09643c43cd01e281a9fdf926b03535
Author: Vincent Povirk <vincent at 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;
}
More information about the wine-cvs
mailing list