From c2f39ea3e873ad9663c28c4c870ba47cda32497e Mon Sep 17 00:00:00 2001 From: David Thompson Date: Tue, 29 Sep 2020 16:44:56 -0400 Subject: array-list: Handle deletions during iteration a bit better. --- chickadee/array-list.scm | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/chickadee/array-list.scm b/chickadee/array-list.scm index e09cded..6c1e6f1 100644 --- a/chickadee/array-list.scm +++ b/chickadee/array-list.scm @@ -139,18 +139,16 @@ *unspecified*) (define (array-list-for-each proc array-list) - (let ((size (array-list-size array-list)) - (vec (array-list-vector array-list))) + (let ((vec (array-list-vector array-list))) (let loop ((i 0)) - (when (< i size) + (when (< i (array-list-size array-list)) (proc i (vector-ref vec i)) (loop (1+ i)))))) (define (array-list-fold proc init array-list) - (let ((size (array-list-size array-list)) - (vec (array-list-vector array-list))) + (let ((vec (array-list-vector array-list))) (let loop ((i 0) (prev init)) - (if (< i size) + (if (< i (size (array-list-size array-list))) (loop (1+ i) (proc i (vector-ref vec i) prev)) prev)))) -- cgit v1.2.3