mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 8.2.0296: mixing up "long long" and __int64 may cause problems
Problem: Mixing up "long long" and __int64 may cause problems. (John Marriott) Solution: Pass varnumber_T to vim_snprintf(). Add v:numbersize.
This commit is contained in:
@@ -1248,30 +1248,40 @@ typedef long_u hash_T; // Type for hi_hash
|
||||
// Use 64-bit Number.
|
||||
#ifdef MSWIN
|
||||
# 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
|
||||
// workaround for cproto that doesn't recognize __int64
|
||||
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
|
||||
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_NO_LONG_LONG)
|
||||
# if 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
|
||||
// this may cause trouble for code that depends on 64 bit ints
|
||||
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
|
||||
#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
|
||||
typedef long long varnumber_T;
|
||||
typedef unsigned long long uvarnumber_T;
|
||||
# define VARNUM_MIN LLONG_MIN
|
||||
# define VARNUM_MAX LLONG_MAX
|
||||
# define UVARNUM_MAX ULLONG_MAX
|
||||
#endif
|
||||
|
||||
typedef double float_T;
|
||||
|
Reference in New Issue
Block a user