1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00

fix i64 overflow warning

This commit is contained in:
Nicolas Sauzede 2019-11-07 04:00:00 +01:00 committed by Alexander Medvednikov
parent ef71867bb0
commit c8de2c0bd4
2 changed files with 7 additions and 2 deletions

View File

@ -41,7 +41,10 @@ pub const (
min_i16 = -32768 min_i16 = -32768
max_i32 = 2147483647 max_i32 = 2147483647
min_i32 = -2147483648 min_i32 = -2147483648
min_i64 = -9223372036854775808 // -9223372036854775808 is wrong because C compilers parse litteral values
// without sign first, and 9223372036854775808 overflows i64, hence the
// consecutive subtraction by 1
min_i64 = -9223372036854775807 - 1
max_i64 = 9223372036854775807 max_i64 = 9223372036854775807
max_u8 = 255 max_u8 = 255
max_u16 = 65535 max_u16 = 65535

View File

@ -865,7 +865,9 @@ pub fn realpath(fpath string) string {
res = int( C._fullpath( fullpath, fpath.str, MAX_PATH ) ) res = int( C._fullpath( fullpath, fpath.str, MAX_PATH ) )
} }
$else{ $else{
res = int( C.realpath( fpath.str, fullpath ) ) // here we want an int==0 if realpath failed, in which case
// realpath would return NULL, and !isnil(NULL) would be false==0
res = int( !isnil(C.realpath( fpath.str, fullpath )) )
} }
if res != 0 { if res != 0 {
return string(fullpath, vstrlen(fullpath)) return string(fullpath, vstrlen(fullpath))