From 2908923db9d047185de110991cc3347a112c38a6 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 24 Aug 2022 12:18:42 +0100 Subject: [PATCH] Fix #1972 --- core/slice/slice.odin | 4 ++-- core/sys/unix/syscalls_linux.odin | 4 ++-- src/check_builtin.cpp | 3 ++- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/core/slice/slice.odin b/core/slice/slice.odin index 440cf643f..e76a5599d 100644 --- a/core/slice/slice.odin +++ b/core/slice/slice.odin @@ -14,14 +14,14 @@ _ :: mem Turn a pointer and a length into a slice. */ from_ptr :: proc "contextless" (ptr: ^$T, count: int) -> []T { - return ([^]T)(ptr)[:count] + return ([^]T)(ptr)[:count] } /* Turn a pointer and a length into a byte slice. */ bytes_from_ptr :: proc "contextless" (ptr: rawptr, byte_count: int) -> []byte { - return ([^]byte)(ptr)[:byte_count] + return ([^]byte)(ptr)[:byte_count] } /* diff --git a/core/sys/unix/syscalls_linux.odin b/core/sys/unix/syscalls_linux.odin index d611e33f0..48e9b49ab 100644 --- a/core/sys/unix/syscalls_linux.odin +++ b/core/sys/unix/syscalls_linux.odin @@ -1568,7 +1568,7 @@ sys_gettid :: proc "contextless" () -> int { } sys_getrandom :: proc "contextless" (buf: [^]byte, buflen: int, flags: uint) -> int { - return cast(int)intrinsics.syscall(SYS_getrandom, buf, cast(uintptr)(buflen), cast(uintptr)(flags)) + return cast(int)intrinsics.syscall(SYS_getrandom, uintptr(buf), uintptr(buflen), uintptr(flags)) } sys_open :: proc "contextless" (path: cstring, flags: int, mode: int = 0o000) -> int { @@ -1748,7 +1748,7 @@ sys_unlink :: proc "contextless" (path: cstring) -> int { } sys_unlinkat :: proc "contextless" (dfd: int, path: cstring, flag: int = 0) -> int { - return int(intrinsics.syscall(SYS_unlinkat, uintptr(dfd), uintptr(rawptr(path)), flag)) + return int(intrinsics.syscall(SYS_unlinkat, uintptr(dfd), uintptr(rawptr(path)), uintptr(flag))) } sys_rmdir :: proc "contextless" (path: cstring) -> int { diff --git a/src/check_builtin.cpp b/src/check_builtin.cpp index 83136d576..e55a2e024 100644 --- a/src/check_builtin.cpp +++ b/src/check_builtin.cpp @@ -4523,7 +4523,8 @@ bool check_builtin_procedure(CheckerContext *c, Operand *operand, Ast *call, i32 if (x.mode != Addressing_Invalid) { convert_to_typed(c, &x, t_uintptr); } - if (!is_type_uintptr(operand->type)) { + convert_to_typed(c, &x, t_uintptr); + if (!is_type_uintptr(x.type)) { gbString t = type_to_string(x.type); error(x.expr, "Argument %td must be of type 'uintptr', got %s", i, t); gb_string_free(t);