diff options
author | Eric Hawicz <erh+git@nimenees.com> | 2020-08-23 16:38:21 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-08-23 16:38:21 -0400 |
commit | f94193180401bf3843c0ac9d4949643970b094d4 (patch) | |
tree | 16487115c06859b2d614e3492037c0d2d0702f99 | |
parent | 1bc7a6b223429684107e5141a33bfabc44ab1a32 (diff) | |
parent | 4298431150df9a83390a14006217c230e684994b (diff) | |
download | json-c-f94193180401bf3843c0ac9d4949643970b094d4.tar.gz |
Merge pull request #663 from stoeckmann/strerror
Properly format errnos in _json_c_strerror
-rw-r--r-- | strerror_override.c | 3 | ||||
-rw-r--r-- | tests/CMakeLists.txt | 3 | ||||
-rw-r--r-- | tests/test_strerror.c | 11 | ||||
-rw-r--r-- | tests/test_strerror.expected | 2 | ||||
l--------- | tests/test_strerror.test | 1 |
5 files changed, 18 insertions, 2 deletions
diff --git a/strerror_override.c b/strerror_override.c index 7a262f7..a3dd377 100644 --- a/strerror_override.c +++ b/strerror_override.c @@ -94,7 +94,7 @@ char *_json_c_strerror(int errno_in) } // It's not one of the known errno values, return the numeric value. - for (ii = 0; errno_in > 10; errno_in /= 10, ii++) + for (ii = 0; errno_in >= 10; errno_in /= 10, ii++) { digbuf[ii] = "0123456789"[(errno_in % 10)]; } @@ -105,5 +105,6 @@ char *_json_c_strerror(int errno_in) { errno_buf[start_idx] = digbuf[ii]; } + errno_buf[start_idx] = '\0'; return errno_buf; } diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 125f615..0c5c26e 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -32,12 +32,13 @@ foreach(TESTNAME test_printbuf test_set_serializer test_set_value + test_strerror test_util_file test_visit test_object_iterator) add_executable(${TESTNAME} ${TESTNAME}.c) -if(${TESTNAME} STREQUAL test_util_file) +if(${TESTNAME} STREQUAL test_strerror OR ${TESTNAME} STREQUAL test_util_file) # For output consistency, we need _json_c_strerror() in some tests: target_sources(${TESTNAME} PRIVATE ../strerror_override.c) endif() diff --git a/tests/test_strerror.c b/tests/test_strerror.c new file mode 100644 index 0000000..1780564 --- /dev/null +++ b/tests/test_strerror.c @@ -0,0 +1,11 @@ +#include "strerror_override.h" +#include "strerror_override_private.h" + +#include <stdio.h> + +int main(int argc, char **argv) +{ + puts(strerror(10000)); + puts(strerror(999)); + return 0; +} diff --git a/tests/test_strerror.expected b/tests/test_strerror.expected new file mode 100644 index 0000000..b6b3bb6 --- /dev/null +++ b/tests/test_strerror.expected @@ -0,0 +1,2 @@ +ERRNO=10000 +ERRNO=999 diff --git a/tests/test_strerror.test b/tests/test_strerror.test new file mode 120000 index 0000000..58a13f4 --- /dev/null +++ b/tests/test_strerror.test @@ -0,0 +1 @@ +test_basic.test
\ No newline at end of file |