aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Kurtis Rader <krader@skepticism.us>2016-05-30 17:31:41 -0700
committerGravatar Kurtis Rader <krader@skepticism.us>2016-05-30 17:31:41 -0700
commit3d74b160b3f1a7c424f38b815320b14bc712eb69 (patch)
treee5ff2616b0ec93812c3a42fbd13625488035da0b /src
parent2768d2ea06e03ae59c99da0fd4d4db582855bc35 (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.cpp45
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);
}