Michael Gardiner : ole32:
Stop StgOpenStorage from creating a file when it does not already
exist.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Jan 4 15:09:23 CST 2007
Module: wine
Branch: master
Commit: f9d8449db26ffc94c67074532e213f3ac8c4de87
URL: http://source.winehq.org/git/wine.git/?a=commit;h=f9d8449db26ffc94c67074532e213f3ac8c4de87
Author: Michael Gardiner <mikegardiner at bigpond.com>
Date: Mon Jan 1 15:09:51 2007 +1100
ole32: Stop StgOpenStorage from creating a file when it does not already exist.
---
dlls/ole32/storage32.c | 32 ++++++++++----------------------
dlls/ole32/tests/storage32.c | 6 +++---
2 files changed, 13 insertions(+), 25 deletions(-)
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c
index 733f659..ac8264d 100644
--- a/dlls/ole32/storage32.c
+++ b/dlls/ole32/storage32.c
@@ -5945,7 +5945,6 @@ HRESULT WINAPI StgOpenStorage(
DWORD shareMode;
DWORD accessMode;
WCHAR fullname[MAX_PATH];
- BOOL newFile;
TRACE("(%s, %p, %x, %p, %d, %p)\n",
debugstr_w(pwcsName), pstgPriority, grfMode,
@@ -6035,24 +6034,13 @@ HRESULT WINAPI StgOpenStorage(
*/
*ppstgOpen = 0;
- if ((accessMode & GENERIC_WRITE) && /* try to create a file if no yet exists */
- ((hFile = CreateFileW( pwcsName, accessMode, shareMode, NULL, CREATE_NEW,
- FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS, 0))
- != INVALID_HANDLE_VALUE))
- {
- newFile = TRUE;
- }
- else
- {
- newFile = FALSE;
- hFile = CreateFileW( pwcsName,
- accessMode,
- shareMode,
- NULL,
- OPEN_EXISTING,
- FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS,
- 0);
- }
+ hFile = CreateFileW( pwcsName,
+ accessMode,
+ shareMode,
+ NULL,
+ OPEN_EXISTING,
+ FILE_ATTRIBUTE_NORMAL | FILE_FLAG_RANDOM_ACCESS,
+ 0);
if (hFile==INVALID_HANDLE_VALUE)
{
@@ -6090,7 +6078,7 @@ HRESULT WINAPI StgOpenStorage(
* Refuse to open the file if it's too small to be a structured storage file
* FIXME: verify the file when reading instead of here
*/
- if (!newFile && GetFileSize(hFile, NULL) < 0x100)
+ if (GetFileSize(hFile, NULL) < 0x100)
{
CloseHandle(hFile);
hr = STG_E_FILEALREADYEXISTS;
@@ -6108,7 +6096,7 @@ HRESULT WINAPI StgOpenStorage(
goto end;
}
- /* if we created new file, initialize the storage */
+ /* Initialize the storage */
hr = StorageImpl_Construct(
newStorage,
hFile,
@@ -6116,7 +6104,7 @@ HRESULT WINAPI StgOpenStorage(
NULL,
grfMode,
TRUE,
- newFile );
+ FALSE );
if (FAILED(hr))
{
diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c
index 6b3b15b..80b6cb0 100644
--- a/dlls/ole32/tests/storage32.c
+++ b/dlls/ole32/tests/storage32.c
@@ -388,12 +388,12 @@ static void test_open_storage(void)
DeleteFileW(filename);
- /* try opening a nonexistent file - it should create it */
+ /* try opening a nonexistent file - it should not create it */
stgm = STGM_DIRECT | STGM_SHARE_EXCLUSIVE | STGM_READWRITE;
r = StgOpenStorage( filename, NULL, stgm, NULL, 0, &stg);
- ok(r==S_OK, "StgOpenStorage failed: 0x%08x\n", r);
+ ok(r!=S_OK, "StgOpenStorage failed: 0x%08x\n", r);
if (r==S_OK) IStorage_Release(stg);
- ok(is_existing_file(filename), "StgOpenStorage didn't create a file\n");
+ ok(!is_existing_file(filename), "StgOpenStorage should not create a file\n");
DeleteFileW(filename);
/* create the file */
More information about the wine-cvs
mailing list