mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.0.0219: ubsan reports errors for overflow
Problem: Ubsan reports errors for integer overflow. Solution: Define macros for minimum and maximum values. Select an expression based on the value. (Mike Williams)
This commit is contained in:
@@ -1133,25 +1133,43 @@ typedef long_u hash_T; /* Type for hi_hash */
|
||||
# ifdef PROTO
|
||||
typedef long varnumber_T;
|
||||
typedef unsigned long uvarnumber_T;
|
||||
#define VARNUM_MIN LONG_MIN
|
||||
#define VARNUM_MAX LONG_MAX
|
||||
#define UVARNUM_MAX ULONG_MAX
|
||||
# else
|
||||
typedef __int64 varnumber_T;
|
||||
typedef unsigned __int64 uvarnumber_T;
|
||||
#define VARNUM_MIN _I64_MIN
|
||||
#define VARNUM_MAX _I64_MAX
|
||||
#define UVARNUM_MAX _UI64_MAX
|
||||
# endif
|
||||
# elif defined(HAVE_STDINT_H)
|
||||
typedef int64_t varnumber_T;
|
||||
typedef uint64_t uvarnumber_T;
|
||||
#define VARNUM_MIN INT64_MIN
|
||||
#define VARNUM_MAX INT64_MAX
|
||||
#define UVARNUM_MAX UINT64_MAX
|
||||
# else
|
||||
typedef long varnumber_T;
|
||||
typedef unsigned long uvarnumber_T;
|
||||
#define VARNUM_MIN LONG_MIN
|
||||
#define VARNUM_MAX LONG_MAX
|
||||
#define UVARNUM_MAX ULONG_MAX
|
||||
# endif
|
||||
#else
|
||||
/* Use 32-bit Number. */
|
||||
# if VIM_SIZEOF_INT <= 3 /* use long if int is smaller than 32 bits */
|
||||
typedef long varnumber_T;
|
||||
typedef unsigned long uvarnumber_T;
|
||||
#define VARNUM_MIN LONG_MIN
|
||||
#define VARNUM_MAX LONG_MAX
|
||||
#define UVARNUM_MAX ULONG_MAX
|
||||
# else
|
||||
typedef int varnumber_T;
|
||||
typedef unsigned int uvarnumber_T;
|
||||
#define VARNUM_MIN INT_MIN
|
||||
#define VARNUM_MAX INT_MAX
|
||||
#define UVARNUM_MAX UINT_MAX
|
||||
# endif
|
||||
#endif
|
||||
|
||||
|
Reference in New Issue
Block a user