From ae587cfb0c810a1ea09cc343e4a6d58cf0984985 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 22 Jun 2007 17:12:40 +0500 Subject: [PATCH] Fix for bug #29079: Semantics of "bigint" depend on platform specifics (size, signedness of char ?) Problem: long and long long types mess in a comparison may lead to wrong results on some platforms. Fix: prefer [unsigned] long long as [u]longlong as it's used unconditionally in many places. include/my_global.h: Fix for bug #29079: Semantics of "bigint" depend on platform specifics (size, signedness of char ?) - use [unsigned] long long as [u]longlong if sizeof(long long) == 8, to avoid type mess, as we use [unsigned] long long unconditionally in many places, for example in constants with [U]LL suffix. --- include/my_global.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/include/my_global.h b/include/my_global.h index b7b200fdcf4..5e31a66e5e3 100644 --- a/include/my_global.h +++ b/include/my_global.h @@ -828,7 +828,12 @@ error "Neither int or long is of 4 bytes width" typedef unsigned long ulong; /* Short for unsigned long */ #endif #ifndef longlong_defined -#if defined(HAVE_LONG_LONG) && SIZEOF_LONG != 8 +/* + Using [unsigned] long long is preferable as [u]longlong because we use + [unsigned] long long unconditionally in many places, + for example in constants with [U]LL suffix. +*/ +#if defined(HAVE_LONG_LONG) && SIZEOF_LONG_LONG == 8 typedef unsigned long long int ulonglong; /* ulong or unsigned long long */ typedef long long int longlong; #else