- /* TODO: test "odd" overflow, i.e. base is not power of two */
-#elif INTMAX_MAX == 0x7fffffffffffffffffffffffffffffffLL
+#elif LLONG_MAX >> 126 == 1
+ /* testing "odd" overflow, i.e. base is not a power of two */
+ TESTCASE( strtoimax( "170141183460469231731687303715884105728", NULL, 0 ) == INTMAX_MAX );
+ TESTCASE( errno == 0 );
+ TESTCASE( strtoimax( "170141183460469231731687303715884105729", NULL, 0 ) == INTMAX_MAX );
+ TESTCASE( errno == ERANGE );
+ errno = 0;
+ TESTCASE( strtoimax( "-170141183460469231731687303715884105728", NULL, 0 ) == (INTMAX_MIN + 1) );
+ TESTCASE( errno == 0 );
+ TESTCASE( strtoimax( "-170141183460469231731687303715884105729", NULL, 0 ) == INTMAX_MIN );
+ TESTCASE( errno == 0 );
+ TESTCASE( strtoimax( "-170141183460469231731687303715884105730", NULL, 0 ) == INTMAX_MIN );
+ TESTCASE( errno == ERANGE );