diff --git a/pkgs/data-pkgs/data-lib/data/gvector.rkt b/pkgs/data-pkgs/data-lib/data/gvector.rkt index 0d92f61ba1..3e56c19a34 100644 --- a/pkgs/data-pkgs/data-lib/data/gvector.rkt +++ b/pkgs/data-pkgs/data-lib/data/gvector.rkt @@ -46,7 +46,7 @@ (vector-set! v index item)) (set-gvector-n! gv (+ n item-count))] [else - (let* ([nn (let loop ([nn n]) + (let* ([nn (let loop ([nn (max n 1)]) (if (<= (+ n item-count) nn) nn (loop (* 2 nn))))] [nv (make-vector nn #f)]) (vector-copy! nv 0 v) diff --git a/pkgs/data-pkgs/data-test/tests/data/gvector.rkt b/pkgs/data-pkgs/data-test/tests/data/gvector.rkt index 2dc15b7e60..6b7af08bc1 100644 --- a/pkgs/data-pkgs/data-test/tests/data/gvector.rkt +++ b/pkgs/data-pkgs/data-test/tests/data/gvector.rkt @@ -22,6 +22,13 @@ gv)) '#(1 2 3)) +(test-equal? "gvector-add! (lots)" + (let () + (define g (gvector)) + (apply gvector-add! g (build-list 11 values)) + (gvector->vector g)) + (for/vector ([i 11]) i)) + (test-equal? "gvector-ref" (let ([gv (gvector 1 2 3)]) ;; 3 valid refs + 1 not-found