comparison src/structs.h @ 19477:2bb0e80fcd32 v8.2.0296

patch 8.2.0296: mixing up "long long" and __int64 may cause problems Commit: https://github.com/vim/vim/commit/f9706e9df0e37d214fb08eda30ba29627e97a607 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 22 14:27:04 2020 +0100 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.
author Bram Moolenaar <Bram@vim.org>
date Sat, 22 Feb 2020 14:30:04 +0100
parents fdfe44ac6a1a
children a4be2f9cfb01
comparison
equal deleted inserted replaced
19476:381e5000c519 19477:2bb0e80fcd32
1246 1246
1247 1247
1248 // Use 64-bit Number. 1248 // Use 64-bit Number.
1249 #ifdef MSWIN 1249 #ifdef MSWIN
1250 # ifdef PROTO 1250 # ifdef PROTO
1251 typedef long varnumber_T; 1251 // workaround for cproto that doesn't recognize __int64
1252 typedef unsigned long uvarnumber_T; 1252 typedef long varnumber_T;
1253 # define VARNUM_MIN LONG_MIN 1253 typedef unsigned long uvarnumber_T;
1254 # define VARNUM_MAX LONG_MAX 1254 # define VARNUM_MIN LONG_MIN
1255 # define UVARNUM_MAX ULONG_MAX 1255 # define VARNUM_MAX LONG_MAX
1256 # define UVARNUM_MAX ULONG_MAX
1256 # else 1257 # else
1257 typedef __int64 varnumber_T; 1258 typedef __int64 varnumber_T;
1258 typedef unsigned __int64 uvarnumber_T; 1259 typedef unsigned __int64 uvarnumber_T;
1259 # define VARNUM_MIN _I64_MIN 1260 # define VARNUM_MIN _I64_MIN
1260 # define VARNUM_MAX _I64_MAX 1261 # define VARNUM_MAX _I64_MAX
1261 # define UVARNUM_MAX _UI64_MAX 1262 # define UVARNUM_MAX _UI64_MAX
1262 # endif 1263 # endif
1263 #elif defined(HAVE_STDINT_H) 1264 #elif defined(HAVE_NO_LONG_LONG)
1264 typedef int64_t varnumber_T; 1265 # if defined(HAVE_STDINT_H)
1265 typedef uint64_t uvarnumber_T; 1266 typedef int64_t varnumber_T;
1266 # define VARNUM_MIN INT64_MIN 1267 typedef uint64_t uvarnumber_T;
1267 # define VARNUM_MAX INT64_MAX 1268 # define VARNUM_MIN INT64_MIN
1268 # define UVARNUM_MAX UINT64_MAX 1269 # define VARNUM_MAX INT64_MAX
1270 # define UVARNUM_MAX UINT64_MAX
1271 # else
1272 // this may cause trouble for code that depends on 64 bit ints
1273 typedef long varnumber_T;
1274 typedef unsigned long uvarnumber_T;
1275 # define VARNUM_MIN LONG_MIN
1276 # define VARNUM_MAX LONG_MAX
1277 # define UVARNUM_MAX ULONG_MAX
1278 # endif
1269 #else 1279 #else
1270 typedef long varnumber_T; 1280 typedef long long varnumber_T;
1271 typedef unsigned long uvarnumber_T; 1281 typedef unsigned long long uvarnumber_T;
1272 # define VARNUM_MIN LONG_MIN 1282 # define VARNUM_MIN LLONG_MIN
1273 # define VARNUM_MAX LONG_MAX 1283 # define VARNUM_MAX LLONG_MAX
1274 # define UVARNUM_MAX ULONG_MAX 1284 # define UVARNUM_MAX ULLONG_MAX
1275 #endif 1285 #endif
1276 1286
1277 typedef double float_T; 1287 typedef double float_T;
1278 1288
1279 typedef struct listvar_S list_T; 1289 typedef struct listvar_S list_T;