fix i64 overflow warning

pull/2678/head
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
max_i32 = 2147483647
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_u8 = 255
max_u16 = 65535

View File

@ -865,7 +865,9 @@ pub fn realpath(fpath string) string {
res = int( C._fullpath( fullpath, fpath.str, MAX_PATH ) )
}
$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 {
return string(fullpath, vstrlen(fullpath))