diff options
author | Kurtis Rader <krader@skepticism.us> | 2016-05-30 17:31:41 -0700 |
---|---|---|
committer | Kurtis Rader <krader@skepticism.us> | 2016-05-30 17:31:41 -0700 |
commit | 3d74b160b3f1a7c424f38b815320b14bc712eb69 (patch) | |
tree | e5ff2616b0ec93812c3a42fbd13625488035da0b /src | |
parent | 2768d2ea06e03ae59c99da0fd4d4db582855bc35 (diff) |
simplify some fish_tests code
This came to my attention because cppcheck was warning about possibly
dereferncing a NULL pointer.
Diffstat (limited to 'src')
-rw-r--r-- | src/fish_tests.cpp | 45 |
1 files 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); } |