>From 727f5436d3d2da41e0e612163597e69cb59f24ab Mon Sep 17 00:00:00 2001 From: Mario Domenech Goulart Date: Thu, 6 Feb 2014 09:01:02 -0200 Subject: [PATCH] Fix subvector when the TO optional argument equals the given vector length (#1097) --- NEWS | 4 ++++ library.scm | 2 +- tests/library-tests.scm | 3 +++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/NEWS b/NEWS index 13b3487..e556e3e 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,10 @@ - csc "-deploy" works now on FreeBSD (thanks to Jules Altfas and Vitaly Magerya), OpenBSD and NetBSD (see README for NetBSD). +- Core libraries + - Fix subvector when the TO optional argument equals the given vector + length (#1097) + 4.8.3 - Security fixes diff --git a/library.scm b/library.scm index 6194e53..31eda65 100644 --- a/library.scm +++ b/library.scm @@ -1408,7 +1408,7 @@ EOF (let* ((len (##sys#size v)) (j (or j len)) (len2 (fx- j i))) - (##sys#check-range i 0 len 'subvector) + (##sys#check-range i 0 (fx+ len 1) 'subvector) (##sys#check-range j 0 (fx+ len 1) 'subvector) (let ((v2 (make-vector len2))) (do ((k 0 (fx+ k 1))) diff --git a/tests/library-tests.scm b/tests/library-tests.scm index df0639f..6638a59 100644 --- a/tests/library-tests.scm +++ b/tests/library-tests.scm @@ -541,6 +541,9 @@ A (assert (equal? '#(2 3) (subvector '#(1 2 3) 1))) (assert (equal? '#(2) (subvector '#(1 2 3) 1 2))) (assert (equal? '#() (subvector '#(1 2 3) 1 1))) +(assert (equal? '#() (subvector '#(1 2 3) 3))) +(assert-fail (subvector '#(1 2 3) 4)) +(assert-fail (subvector '#(1 2 3) 3 4)) ;;; alist accessors -- 1.7.10.4