From 3d74b160b3f1a7c424f38b815320b14bc712eb69 Mon Sep 17 00:00:00 2001 From: Kurtis Rader Date: Mon, 30 May 2016 17:31:41 -0700 Subject: simplify some fish_tests code This came to my attention because cppcheck was warning about possibly dereferncing a NULL pointer. --- src/fish_tests.cpp | 45 ++++++++++++++------------------------------- 1 file changed, 14 insertions(+), 31 deletions(-) diff --git a/src/fish_tests.cpp b/src/fish_tests.cpp index 29040e22..d753ac78 100644 --- a/src/fish_tests.cpp +++ b/src/fish_tests.cpp @@ -845,35 +845,25 @@ static void test_utf82wchar(const char *src, size_t slen, const wchar_t *dst, si } } - if (dst != NULL) { + if (!dst) { + size = utf8_to_wchar(src, slen, NULL, flags); + } else { mem = (wchar_t *)malloc(dlen * sizeof(*mem)); if (mem == NULL) { err(L"u2w: %s: MALLOC FAILED\n", descr); return; } - } - - do { - if (mem == NULL) { - size = utf8_to_wchar(src, slen, NULL, flags); - } else { - std::wstring buff; - size = utf8_to_wchar(src, slen, &buff, flags); - std::copy(buff.begin(), buff.begin() + std::min(dlen, buff.size()), mem); - } - if (res != size) { - err(L"u2w: %s: FAILED (rv: %lu, must be %lu)", descr, size, res); - break; - } - if (mem == NULL) break; /* OK */ - - if (memcmp(mem, dst, size * sizeof(*mem)) != 0) { - err(L"u2w: %s: BROKEN", descr); - break; - } + std::wstring buff; + size = utf8_to_wchar(src, slen, &buff, flags); + std::copy(buff.begin(), buff.begin() + std::min(dlen, buff.size()), mem); + } - } while (0); + if (res != size) { + err(L"u2w: %s: FAILED (rv: %lu, must be %lu)", descr, size, res); + } else if (mem && memcmp(mem, dst, size * sizeof(*mem)) != 0) { + err(L"u2w: %s: BROKEN", descr); + } free(mem); } @@ -903,7 +893,7 @@ static void test_wchar2utf8(const wchar_t *src, size_t slen, const char *dst, si } } - if (dst != NULL) { + if (dst) { mem = (char *)malloc(dlen); if (mem == NULL) { err(L"w2u: %s: MALLOC FAILED", descr); @@ -914,17 +904,10 @@ static void test_wchar2utf8(const wchar_t *src, size_t slen, const char *dst, si size = wchar_to_utf8(src, slen, mem, dlen, flags); if (res != size) { err(L"w2u: %s: FAILED (rv: %lu, must be %lu)", descr, size, res); - goto finish; - } - - if (mem == NULL) goto finish; /* OK */ - - if (memcmp(mem, dst, size) != 0) { + } else if (dst && memcmp(mem, dst, size) != 0) { err(L"w2u: %s: BROKEN", descr); - goto finish; } -finish: free(mem); } -- cgit v1.2.3