[PATCH] riched20/tests: Plug a few memory leaks and make failure messages more meaningful.

Austin Lund austin.lund at gmail.com
Tue Oct 5 21:29:29 CDT 2010


---
 dlls/riched20/tests/txtsrv.c |   53 +++++++++++++++++++++++------------------
 1 files changed, 30 insertions(+), 23 deletions(-)

diff --git a/dlls/riched20/tests/txtsrv.c b/dlls/riched20/tests/txtsrv.c
index 8da111d..894ff92 100644
--- a/dlls/riched20/tests/txtsrv.c
+++ b/dlls/riched20/tests/txtsrv.c
@@ -612,7 +612,7 @@ static BOOL init_texthost(void)
        ITextServices object. */
     pCreateTextServices = (void*)GetProcAddress(hmoduleRichEdit, "CreateTextServices");
     result = (*pCreateTextServices)(NULL,(ITextHost*)dummyTextHost, &init);
-    ok(result == S_OK, "Did not return OK when created. Returned %x\n", result);
+    ok(result == S_OK, "Did not return S_OK when created (result =  %x)\n", result);
     if (result != S_OK) {
         CoTaskMemFree(dummyTextHost);
         skip("CreateTextServices failed.\n");
@@ -621,7 +621,7 @@ static BOOL init_texthost(void)
 
     result = IUnknown_QueryInterface(init, &IID_ITextServices,
                                      (void **)&txtserv);
-    ok((result == S_OK) && (txtserv != NULL), "Querying interface failed\n");
+    ok((result == S_OK) && (txtserv != NULL), "Querying interface failed (result = %x, txtserv = %p)\n", result, txtserv);
     IUnknown_Release(init);
     if (!((result == S_OK) && (txtserv != NULL))) {
         CoTaskMemFree(dummyTextHost);
@@ -632,6 +632,12 @@ static BOOL init_texthost(void)
     return TRUE;
 }
 
+static void free_texthost(void)
+{
+    IUnknown_Release(txtserv);
+    CoTaskMemFree(dummyTextHost);
+}
+
 static void test_TxGetText(void)
 {
     HRESULT hres;
@@ -641,10 +647,9 @@ static void test_TxGetText(void)
         return;
 
     hres = ITextServices_TxGetText(txtserv, &rettext);
-    ok(hres == S_OK, "ITextServices_TxGetText failed\n");
+    ok(hres == S_OK, "ITextServices_TxGetText failed (result = %x)\n", hres);
 
-    IUnknown_Release(txtserv);
-    CoTaskMemFree(dummyTextHost);
+    free_texthost();
 }
 
 static void test_TxSetText(void)
@@ -657,19 +662,18 @@ static void test_TxSetText(void)
         return;
 
     hres = ITextServices_TxSetText(txtserv, settext);
-    ok(hres == S_OK, "ITextServices_TxSetText failed\n");
+    ok(hres == S_OK, "ITextServices_TxSetText failed (result = %x)\n", hres);
 
     hres = ITextServices_TxGetText(txtserv, &rettext);
-    ok(hres == S_OK, "ITextServices_TxGetText failed\n");
+    ok(hres == S_OK, "ITextServices_TxGetText failed (result = %x)\n", hres);
 
     ok(SysStringLen(rettext) == 4,
-                 "String returned of wrong length\n");
+                 "String returned of wrong length (expected 4, got %d)\n", SysStringLen(rettext));
     ok(memcmp(rettext,settext,SysStringByteLen(rettext)) == 0,
                  "String returned differs\n");
 
     SysFreeString(rettext);
-    IUnknown_Release(txtserv);
-    CoTaskMemFree(dummyTextHost);
+    free_texthost();
 }
 
 static void test_TxGetNaturalSize(void) {
@@ -708,9 +712,7 @@ static void test_TxGetNaturalSize(void) {
     ret = GetCharWidth32(hdcDraw,'A','Z',charwidth_caps_text);
     if (!ret && GetLastError() == ERROR_CALL_NOT_IMPLEMENTED) {
         win_skip("GetCharWidth32 is not available\n");
-        RestoreDC(hdcDraw,1);
-        ReleaseDC(NULL,hdcDraw);
-        return;
+        goto cleanup;
     }
 
     /* Make measurements in MM_TEXT */
@@ -718,13 +720,21 @@ static void test_TxGetNaturalSize(void) {
     xdim = 0; ydim = 0;
 
     result = ITextServices_TxSetText(txtserv, oneA);
-    ok(result == S_OK, "ITextServices_TxSetText failed\n");
+    ok(result == S_OK, "ITextServices_TxSetText failed (result = %x)\n", result);
+    if (result != S_OK) {
+        skip("Could not set text\n");
+        goto cleanup;
+    }
 
     result = ITextServices_TxGetNaturalSize(txtserv, DVASPECT_CONTENT,
                                             hdcDraw, NULL, NULL,
                                             TXTNS_FITTOCONTENT, &psizelExtent,
                                             &xdim, &ydim);
-    todo_wine ok(result == S_OK, "TxGetNaturalSize failed\n");
+    todo_wine ok(result == S_OK, "TxGetNaturalSize failed (result = %x)\n", result);
+    if (result != S_OK) {
+        skip("TxGetNaturalSize measurements failed\n");
+        goto cleanup;
+    }
     todo_wine ok(ydim == tmInfo_text.tmHeight,
                  "Height calculated incorrectly (expected %d, got %d)\n",
                  tmInfo_text.tmHeight, ydim);
@@ -733,11 +743,10 @@ static void test_TxGetNaturalSize(void) {
                  "Width calculated incorrectly (expected %d {+1}, got %d)\n",
                  charwidth_caps_text[0], xdim);
 
+cleanup:
     RestoreDC(hdcDraw,1);
     ReleaseDC(NULL,hdcDraw);
-
-    IUnknown_Release(txtserv);
-    CoTaskMemFree(dummyTextHost);
+    free_texthost();
 }
 
 static void test_TxDraw(void)
@@ -757,11 +766,10 @@ static void test_TxDraw(void)
         result = ITextServices_TxDraw(txtserv, dwAspect, 0, pvAspect, ptd,
                                       tmphdc, hicTargetDev, &client, NULL,
                                       NULL, NULL, 0, 0);
-        ok(result == S_OK, "TxDraw failed\n");
+        ok(result == S_OK, "TxDraw failed (result = %x)\n", result);
     }
 
-    IUnknown_Release(txtserv);
-    CoTaskMemFree(dummyTextHost);
+    free_texthost();
 
 }
 
@@ -776,8 +784,7 @@ START_TEST( txtsrv )
 
     if (init_texthost())
     {
-        IUnknown_Release(txtserv);
-        CoTaskMemFree(dummyTextHost);
+        free_texthost();
 
         test_TxGetText();
         test_TxSetText();
-- 
1.7.0.4




More information about the wine-patches mailing list