From e9155f36db6fe8f23dfd06ac7feaf279f0c1b95c Mon Sep 17 00:00:00 2001 From: Gurucharan Shetty Date: Fri, 17 Jul 2015 08:48:23 -0700 Subject: [PATCH] type-props: Avoid a MSVC warning. Currently, MSVC complains when you have a macro of the form TYPE_MAXIMUM(uint64_t) because a part of macro becomes ~(uint64_t)0 << 64 with a warning: C4293: '<<' : shift count negative or too big, undefined behavior. This commit makes changes to the macro to prevent that warning. Suggested-by: Ben Pfaff Signed-off-by: Gurucharan Shetty Acked-by: Ben Pfaff --- lib/type-props.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/type-props.h b/lib/type-props.h index 8c83ea6fc..3c908a736 100644 --- a/lib/type-props.h +++ b/lib/type-props.h @@ -23,10 +23,10 @@ #define TYPE_IS_SIGNED(TYPE) ((TYPE) 1 > (TYPE) -1) #define TYPE_VALUE_BITS(TYPE) (sizeof(TYPE) * CHAR_BIT - TYPE_IS_SIGNED(TYPE)) #define TYPE_MINIMUM(TYPE) (TYPE_IS_SIGNED(TYPE) \ - ? ~(TYPE)0 << TYPE_VALUE_BITS(TYPE) \ + ? ~(TYPE)0 << (sizeof(TYPE) * 8 - 1) \ : 0) #define TYPE_MAXIMUM(TYPE) (TYPE_IS_SIGNED(TYPE) \ - ? ~(~(TYPE)0 << TYPE_VALUE_BITS(TYPE)) \ + ? ~(~(TYPE)0 << (sizeof(TYPE) * 8 - 1)) \ : (TYPE)-1) /* Number of decimal digits required to format an integer of the given TYPE. -- 2.20.1