cli: Adjust integer range check, replace magic numbers with constants
authorSimon Marchi <simon.marchi@efficios.com>
Tue, 23 Apr 2019 14:03:34 +0000 (10:03 -0400)
committerJérémie Galarneau <jeremie.galarneau@efficios.com>
Fri, 3 May 2019 22:19:39 +0000 (18:19 -0400)
The value (1ULL << 63) - 1), used for checking that integer values are
within range, actually mean INT64_MAX, so use that instead.

Also, the negative case is not quite right: the value -(INT64_MAX + 1),
-9223372036854775808, is within the range of a signed 64-bits number
(assuming two's complement), but is not accepted right now.  Adjust the
check so it accepts that value.

I tested this patch manually: we accept  -9223372036854775808 but reject
-9223372036854775809.

Signed-off-by: Simon Marchi <simon.marchi@efficios.com>
cli/babeltrace-cfg-cli-args.c

index a86d1096e0bf51209fc63816f694f0db4824e1f3..b71b70f532233c360d8bd715cdf907682d486e86 100644 (file)
@@ -198,7 +198,7 @@ bt_value *ini_parse_neg_number(struct ini_parsing_state *state)
                /* Negative integer */
                uint64_t int_val = state->scanner->value.v_int64;
 
-               if (int_val > (1ULL << 63) - 1) {
+               if (int_val > (((uint64_t) INT64_MAX) + 1)) {
                        g_string_append_printf(state->ini_error,
                                "Integer value -%" PRIu64 " is outside the range of a 64-bit signed integer\n",
                                int_val);
@@ -244,7 +244,7 @@ bt_value *ini_parse_value(struct ini_parsing_state *state)
                /* Positive integer */
                uint64_t int_val = state->scanner->value.v_int64;
 
-               if (int_val > (1ULL << 63) - 1) {
+               if (int_val > INT64_MAX) {
                        g_string_append_printf(state->ini_error,
                                "Integer value %" PRIu64 " is outside the range of a 64-bit signed integer\n",
                                int_val);
This page took 0.0265919999999999 seconds and 4 git commands to generate.