Mercurial > vim
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; |