From 756c1b7bcb8c881076594bf0ed73f64971e77f1b Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 17 Sep 2022 15:12:32 +0100 Subject: [PATCH] Correct slice/ptr.odin calls --- core/slice/ptr.odin | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/slice/ptr.odin b/core/slice/ptr.odin index 9074932ae..214b745f7 100644 --- a/core/slice/ptr.odin +++ b/core/slice/ptr.odin @@ -4,10 +4,10 @@ import "core:builtin" import "core:mem" ptr_add :: proc(p: $P/^$T, x: int) -> ^T { - return (^T)(uintptr(p) + size_of(T)*x) + return ([^]T)(p)[x:] } ptr_sub :: proc(p: $P/^$T, x: int) -> ^T { - return #force_inline ptr_add(p, -x) + return ([^]T)(p)[-x:] } ptr_swap_non_overlapping :: proc(x, y: rawptr, len: int) { @@ -84,12 +84,14 @@ ptr_rotate :: proc(left: int, mid: ^$T, right: int) { } } } else { - ptr_swap_non_overlapping(ptr_sub(mid, left), mid, left) - mid = ptr_add(mid, left) + for { + ptr_swap_non_overlapping(ptr_sub(mid, left), mid, left) + mid = ptr_add(mid, left) - right -= left - if right < left { - break + right -= left + if right < left { + break + } } } }