Module: wine Branch: master Commit: 56bc0515c2bd095764914631d614224763dc0623 URL: http://source.winehq.org/git/wine.git/?a=commit;h=56bc0515c2bd095764914631d6...
Author: Alexander Kochetkov al.kochet@gmail.com Date: Wed Dec 30 03:54:20 2009 +0300
ole32/storage32: Fix return value for invalid access mode in OpenStream.
---
dlls/ole32/storage32.c | 2 +- dlls/ole32/tests/storage32.c | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletions(-)
diff --git a/dlls/ole32/storage32.c b/dlls/ole32/storage32.c index 229fe76..e000535 100644 --- a/dlls/ole32/storage32.c +++ b/dlls/ole32/storage32.c @@ -448,7 +448,7 @@ static HRESULT WINAPI StorageBaseImpl_OpenStream( if(!(This->openFlags & STGM_TRANSACTED)) { if ( STGM_ACCESS_MODE( grfMode ) > STGM_ACCESS_MODE( This->openFlags ) ) { - res = STG_E_ACCESSDENIED; + res = STG_E_INVALIDFLAG; goto end; } } diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c index 19c1e8f..ceca756 100644 --- a/dlls/ole32/tests/storage32.c +++ b/dlls/ole32/tests/storage32.c @@ -355,6 +355,19 @@ static void test_storage_stream(void)
r = IStorage_Release(stg); ok(r == 0, "wrong ref count\n"); + + /* try create some invalid streams */ + stg = NULL; + stm = NULL; + r = StgOpenStorage(filename, NULL, STGM_READ | STGM_SHARE_DENY_WRITE, NULL, 0, &stg); + ok(r == S_OK, "should succeed\n"); + if (stg) + { + r = IStorage_OpenStream(stg, stmname, NULL, STGM_SHARE_EXCLUSIVE | STGM_READWRITE, 0, &stm); + ok(r == STG_E_INVALIDFLAG, "IStorage->OpenStream should return STG_E_INVALIDFLAG instead of 0x%08x\n", r); + IStorage_Release(stg); + } + r = DeleteFileA(filenameA); ok(r, "file should exist\n"); }