diff options
author | ridiculousfish <corydoras@ridiculousfish.com> | 2015-01-18 16:03:21 -0800 |
---|---|---|
committer | ridiculousfish <corydoras@ridiculousfish.com> | 2015-01-18 16:03:21 -0800 |
commit | 68efa5233c3fb338a52c38730a04d0da1c50ff30 (patch) | |
tree | e438b29438e8dd05a69190536f6d972ea374cd10 | |
parent | dce487380c771da7a9507549baf6fde496d14d57 (diff) |
Fix and add tests for format_long_safe with negative numbers
-rw-r--r-- | common.cpp | 3 | ||||
-rw-r--r-- | fish_tests.cpp | 7 |
2 files changed, 7 insertions, 3 deletions
@@ -806,10 +806,9 @@ void format_long_safe(wchar_t buff[64], long val) size_t idx = 0; bool negative = (val < 0); - while (val > 0) + while (val != 0) { long rem = val % 10; - /* Here we're assuming that wide character digits are contiguous - is that a correct assumption? */ buff[idx++] = L'0' + (wchar_t)(rem < 0 ? -rem : rem); val /= 10; } diff --git a/fish_tests.cpp b/fish_tests.cpp index 28089bda..6cab5a66 100644 --- a/fish_tests.cpp +++ b/fish_tests.cpp @@ -296,6 +296,12 @@ static void test_format(void) format_long_safe(buff1, j); sprintf(buff2, "%d", j); do_test(! strcmp(buff1, buff2)); + + wchar_t wbuf1[128], wbuf2[128]; + format_long_safe(wbuf1, j); + swprintf(wbuf2, 128, L"%d", j); + do_test(! wcscmp(wbuf1, wbuf2)); + } long q = LONG_MIN; @@ -303,7 +309,6 @@ static void test_format(void) format_long_safe(buff1, q); sprintf(buff2, "%ld", q); do_test(! strcmp(buff1, buff2)); - } /** |