aboutsummaryrefslogtreecommitdiff
path: root/core/runtime
diff options
context:
space:
mode:
Diffstat (limited to 'core/runtime')
-rw-r--r--core/runtime/core.odin14
1 files changed, 4 insertions, 10 deletions
diff --git a/core/runtime/core.odin b/core/runtime/core.odin
index df5ef7a46..527c85c2b 100644
--- a/core/runtime/core.odin
+++ b/core/runtime/core.odin
@@ -587,19 +587,13 @@ ordered_remove :: proc(array: ^$D/[dynamic]$T, index: int, loc := #caller_locati
}
@builtin
-unordered_remove_range :: proc(array: ^$D/[dynamic]$T, lo, hi: int, loc := #caller_location) {
- slice_expr_error_lo_hi_loc(loc, lo, hi, len(array));
- for index in lo..<hi {
- unordered_remove(array, index, loc);
- }
-}
-
-@builtin
-ordered_remove_range :: proc(array: ^$D/[dynamic]$T, lo, hi: int, loc := #caller_location) {
+remove_range :: proc(array: ^$D/[dynamic]$T, lo, hi: int, loc := #caller_location) {
slice_expr_error_lo_hi_loc(loc, lo, hi, len(array));
n := max(hi-lo, 0);
if n > 0 {
- copy(array[lo:], array[hi:]);
+ if hi != len(array) {
+ copy(array[lo:], array[hi:]);
+ }
(^Raw_Dynamic_Array)(array).len -= n;
}
}