Browse Source

Remove *_remove from demo and use built-in versions

gingerBill 6 years ago
parent
commit
1fd677b42e
3 changed files with 4 additions and 16 deletions
  1. 3 1
      core/runtime/core.odin
  2. 1 1
      core/runtime/internal.odin
  3. 0 14
      examples/demo/demo.odin

+ 3 - 1
core/runtime/core.odin

@@ -403,7 +403,9 @@ unordered_remove :: proc(array: ^$D/[dynamic]$T, index: int, loc := #caller_loca
 @builtin
 ordered_remove :: proc(array: ^$D/[dynamic]$T, index: int, loc := #caller_location) {
 	bounds_check_error_loc(loc, index, len(array));
-	copy(array[index:], array[index+1:]);
+	if index+1 < len(array) {
+		copy(array[index:], array[index+1:]);
+	}
 	pop(array);
 }
 

+ 1 - 1
core/runtime/internal.odin

@@ -303,7 +303,7 @@ slice_expr_error_hi :: proc "contextless" (file: string, line, column: int, hi:
 }
 
 slice_expr_error_lo_hi :: proc "contextless" (file: string, line, column: int, lo, hi: int, len: int) {
-	if 0 <= lo && lo < len && len <= hi && hi <= len do return;
+	if 0 <= lo && lo < len && lo <= hi && hi <= len do return;
 	handle_error :: proc "contextless" (file: string, line, column: int, lo, hi: int, len: int) {
 		fd := os.stderr;
 		print_caller_location(fd, Source_Code_Location{file, line, column, "", 0});

+ 0 - 14
examples/demo/demo.odin

@@ -561,20 +561,6 @@ threading_example :: proc() {
 	when os.OS == "windows" {
 		fmt.println("# threading_example");
 
-		unordered_remove :: proc(array: ^$D/[dynamic]$T, index: int, loc := #caller_location) {
-			runtime.bounds_check_error_loc(loc, index, len(array));
-			n := len(array)-1;
-			if index != n {
-				array[index] = array[n];
-			}
-			pop(array);
-		}
-		ordered_remove :: proc(array: ^$D/[dynamic]$T, index: int, loc := #caller_location) {
-			runtime.bounds_check_error_loc(loc, index, len(array));
-			copy(array[index:], array[index+1:]);
-			pop(array);
-		}
-
 		worker_proc :: proc(t: ^thread.Thread) -> int {
 			for iteration in 1..5 {
 				fmt.printf("Thread %d is on iteration %d\n", t.user_index, iteration);