ole32/tests: Don't crash when StgOpenStorage fails

André Hentschel nerv at dawncrow.de
Tue Nov 26 16:48:59 CST 2013


Mostly for NT: https://test.winehq.org/data/tests/ole32:storage32.html
---
 dlls/ole32/tests/storage32.c | 22 ++++++++++++----------
 1 file changed, 12 insertions(+), 10 deletions(-)

diff --git a/dlls/ole32/tests/storage32.c b/dlls/ole32/tests/storage32.c
index 61744a9..06d2fa4 100644
--- a/dlls/ole32/tests/storage32.c
+++ b/dlls/ole32/tests/storage32.c
@@ -3082,19 +3082,21 @@ if (hr == S_OK) {
     /* writer mode */
     hr = StgOpenStorage(fileW, NULL, STGM_DIRECT_SWMR | STGM_READWRITE | STGM_SHARE_DENY_WRITE, NULL, 0, &stg);
     ok(hr == S_OK, "got %08x\n", hr);
+    if(hr == S_OK)
+    {
+        ref = IStorage_AddRef(stg);
+        IStorage_Release(stg);
 
-    ref = IStorage_AddRef(stg);
-    IStorage_Release(stg);
-
-    hr = IStorage_QueryInterface(stg, &IID_IDirectWriterLock, (void**)&dwlock);
-    ok(hr == S_OK, "got %08x\n", hr);
+        hr = IStorage_QueryInterface(stg, &IID_IDirectWriterLock, (void**)&dwlock);
+        ok(hr == S_OK, "got %08x\n", hr);
 
-    ref2 = IStorage_AddRef(stg);
-    IStorage_Release(stg);
-    ok(ref2 == ref + 1, "got %u\n", ref2);
+        ref2 = IStorage_AddRef(stg);
+        IStorage_Release(stg);
+        ok(ref2 == ref + 1, "got %u\n", ref2);
 
-    IDirectWriterLock_Release(dwlock);
-    IStorage_Release(stg);
+        IDirectWriterLock_Release(dwlock);
+        IStorage_Release(stg);
+    }
 
     DeleteFileW(fileW);
 }
-- 
1.8.1.2





More information about the wine-patches mailing list