[PATCH] ole32/storage32: Fix return value for invalid access mode in OpenStream

Alexander Kochetkov al.kochet at gmail.com
Tue Dec 29 19:11:08 CST 2009


This fix is need for run Altium Designer 6 without need to install dcom98.
Return value was tested under XP.
-------------- next part --------------
From 291f37f1038ff7d5179635a67e0c272288beadcb Mon Sep 17 00:00:00 2001
From: Alexander Kochetkov <al.kochet at gmail.com>
Date: Wed, 30 Dec 2009 03:54:20 +0300
Subject: [PATCH] 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 629709a..0ced457 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 07ac810..0617274 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");
 }
-- 
1.6.0.4


More information about the wine-patches mailing list