Jörg Höhle : ole32/tests: Guard ReleaseStgMedium with SUCCEEDED.

Alexandre Julliard julliard at winehq.org
Wed Sep 30 10:56:07 CDT 2009


Module: wine
Branch: master
Commit: 08df19b40510f37d89bb7740abcacfa6ad246f91
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=08df19b40510f37d89bb7740abcacfa6ad246f91

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Tue Sep 29 17:49:20 2009 +0200

ole32/tests: Guard ReleaseStgMedium with SUCCEEDED.

---

 dlls/ole32/tests/clipboard.c |   56 ++++++++++++++++++++++-------------------
 1 files changed, 30 insertions(+), 26 deletions(-)

diff --git a/dlls/ole32/tests/clipboard.c b/dlls/ole32/tests/clipboard.c
index e58ac02..626d244 100644
--- a/dlls/ole32/tests/clipboard.c
+++ b/dlls/ole32/tests/clipboard.c
@@ -477,8 +477,6 @@ static void test_get_clipboard(void)
     hr = IDataObject_QueryGetData(data_obj, &fmtetc);
     ok(hr == DV_E_FORMATETC || broken(hr == S_OK),
         "IDataObject_QueryGetData should have failed with DV_E_FORMATETC instead of 0x%08x\n", hr);
-    if (hr == S_OK)
-        ReleaseStgMedium(&stgmedium);
 
     InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
     fmtetc.cfFormat = CF_RIFF;
@@ -499,19 +497,19 @@ static void test_get_clipboard(void)
     InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
     hr = IDataObject_GetData(data_obj, &fmtetc, &stgmedium);
     ok(hr == S_OK, "IDataObject_GetData failed with error 0x%08x\n", hr);
-    ReleaseStgMedium(&stgmedium);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&stgmedium);
 
     InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
     fmtetc.dwAspect = 0xdeadbeef;
     hr = IDataObject_GetData(data_obj, &fmtetc, &stgmedium);
     ok(hr == S_OK, "IDataObject_GetData failed with error 0x%08x\n", hr);
-    ReleaseStgMedium(&stgmedium);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&stgmedium);
 
     InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
     fmtetc.dwAspect = DVASPECT_THUMBNAIL;
     hr = IDataObject_GetData(data_obj, &fmtetc, &stgmedium);
     ok(hr == S_OK, "IDataObject_GetData failed with error 0x%08x\n", hr);
-    ReleaseStgMedium(&stgmedium);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&stgmedium);
 
     InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
     fmtetc.lindex = 256;
@@ -528,11 +526,13 @@ static void test_get_clipboard(void)
     fmtetc.cfFormat = CF_RIFF;
     hr = IDataObject_GetData(data_obj, &fmtetc, &stgmedium);
     ok(hr == DV_E_FORMATETC, "IDataObject_GetData should have failed with DV_E_FORMATETC instead of 0x%08x\n", hr);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&stgmedium);
 
     InitFormatEtc(fmtetc, CF_TEXT, TYMED_HGLOBAL);
     fmtetc.tymed = TYMED_FILE;
     hr = IDataObject_GetData(data_obj, &fmtetc, &stgmedium);
     ok(hr == DV_E_TYMED, "IDataObject_GetData should have failed with DV_E_TYMED instead of 0x%08x\n", hr);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&stgmedium);
 
     ok(DataObjectImpl_GetData_calls == 6, "DataObjectImpl_GetData should have been called 6 times instead of %d times\n", DataObjectImpl_GetData_calls);
 
@@ -967,7 +967,7 @@ static void test_consumer_refs(void)
     hr = IDataObject_GetData(get1, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(DataObjectImpl_GetData_calls == 0, "GetData called\n");
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     hr = OleGetClipboard(&get2);
     ok(hr == S_OK, "got %08x\n", hr);
@@ -1004,7 +1004,7 @@ static void test_consumer_refs(void)
     hr = IDataObject_GetData(get1, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(DataObjectImpl_GetData_calls == 1, "GetData not called\n");
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
     refs = count_refs(src);
     ok(refs == old_refs + 1, "%d %d\n", refs, old_refs);
 
@@ -1014,7 +1014,7 @@ static void test_consumer_refs(void)
     hr = IDataObject_GetData(get1, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(DataObjectImpl_GetData_calls == 1, "GetData not called\n");
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     refs = count_refs(src);
     ok(refs == 2, "%d\n", refs);
@@ -1047,7 +1047,7 @@ static void test_consumer_refs(void)
     hr = IDataObject_GetData(get1, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(DataObjectImpl_GetData_calls == 1, "GetData not called\n");
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     refs = count_refs(src);
     ok(refs == 1, "%d\n", refs);
@@ -1096,23 +1096,24 @@ static void test_flushed_getdata(void)
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_HGLOBAL, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, CF_TEXT, TYMED_ISTREAM);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_ISTREAM, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, CF_TEXT, TYMED_ISTORAGE);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == E_FAIL, "got %08x\n", hr);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, CF_TEXT, 0xffff);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_HGLOBAL, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     /* stream format -> global & stream */
 
@@ -1120,23 +1121,24 @@ static void test_flushed_getdata(void)
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_ISTREAM, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, cf_stream, TYMED_ISTORAGE);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == E_FAIL, "got %08x\n", hr);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, cf_stream, TYMED_HGLOBAL);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_HGLOBAL, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, cf_stream, 0xffff);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_ISTREAM, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     /* storage format -> global, stream & storage */
 
@@ -1144,34 +1146,36 @@ static void test_flushed_getdata(void)
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_ISTORAGE, "got %x\n", med.tymed);
-    hr = IStorage_Stat(med.u.pstg, &stat, STATFLAG_NONAME);
-    ok(hr == S_OK, "got %08x\n", hr);
-    ok(stat.grfMode == (STGM_SHARE_EXCLUSIVE | STGM_READWRITE), "got %08x\n", stat.grfMode);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) {
+        hr = IStorage_Stat(med.u.pstg, &stat, STATFLAG_NONAME);
+        ok(hr == S_OK, "got %08x\n", hr);
+        ok(stat.grfMode == (STGM_SHARE_EXCLUSIVE | STGM_READWRITE), "got %08x\n", stat.grfMode);
+        ReleaseStgMedium(&med);
+    }
 
     InitFormatEtc(fmt, cf_storage, TYMED_ISTREAM);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_ISTREAM, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, cf_storage, TYMED_HGLOBAL);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_HGLOBAL, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, cf_storage, TYMED_HGLOBAL | TYMED_ISTREAM);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_HGLOBAL, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, cf_storage, 0xffff);
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_ISTORAGE, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     /* complex format with target device */
 
@@ -1180,7 +1184,7 @@ static void test_flushed_getdata(void)
     ok(hr == DV_E_FORMATETC ||
        broken(hr == S_OK), /* win9x, winme & nt4 */
        "got %08x\n", hr);
-    if(hr == S_OK) ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     InitFormatEtc(fmt, cf_another, 0xffff);
     memset(&dm, 0, sizeof(dm));
@@ -1199,7 +1203,7 @@ static void test_flushed_getdata(void)
     hr = IDataObject_GetData(get, &fmt, &med);
     ok(hr == S_OK, "got %08x\n", hr);
     ok(med.tymed == TYMED_ISTORAGE, "got %x\n", med.tymed);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     HeapFree(GetProcessHeap(), 0, fmt.ptd);
 
@@ -1356,7 +1360,7 @@ static void test_nonole_clipboard(void)
     ok(hr == S_OK, "got %08x\n", hr);
     obj_type = GetObjectType(U(med).hEnhMetaFile);
     ok(obj_type == OBJ_ENHMETAFILE, "got %d\n", obj_type);
-    ReleaseStgMedium(&med);
+    if(SUCCEEDED(hr)) ReleaseStgMedium(&med);
 
     IDataObject_Release(get);
 




More information about the wine-cvs mailing list