Fix and add tests for format_long_safe with negative numbers

This commit is contained in:
ridiculousfish 2015-01-18 16:03:21 -08:00
parent dce487380c
commit 68efa5233c
2 changed files with 7 additions and 3 deletions

View File

@ -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;
}

View File

@ -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));
}
/**