From d08fc667327da4eae2427adfcffb3cbdca3f234c Mon Sep 17 00:00:00 2001 From: Austin Lund Date: Wed, 6 Oct 2010 12:29:29 +1000 Subject: [PATCH] riched20/tests: Plug a few memory leaks and make failure messages more meaningful. --- dlls/riched20/tests/txtsrv.c | 53 +++++++++++++++++++++++++------------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/dlls/riched20/tests/txtsrv.c b/dlls/riched20/tests/txtsrv.c index 8da111de2c7..894ff92922c 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(); -- 2.11.4.GIT