summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Llorens <lloda@sarc.name>2020-02-03 11:42:01 +0100
committerDaniel Llorens <lloda@sarc.name>2020-04-09 16:59:39 +0200
commitfa19f702f6698b7b82325a03b1b03cbcd042aa2d (patch)
tree088150a34b93cf1d5d841189d6d00652164d0722
parent21ede682af731f6666ffe586a27f6572e00cdebb (diff)
downloadguile-fa19f702f6698b7b82325a03b1b03cbcd042aa2d.tar.gz
Require vector as argument to vector->list
* libguile/vectors.c (vector->list): As stated. Simplify. * test-suite/tests/vectors.test: Remove shared array test.
-rw-r--r--libguile/vectors.c19
-rw-r--r--test-suite/tests/vectors.test6
2 files changed, 7 insertions, 18 deletions
diff --git a/libguile/vectors.c b/libguile/vectors.c
index 5d2eaf9a2..fe07c6bb0 100644
--- a/libguile/vectors.c
+++ b/libguile/vectors.c
@@ -280,8 +280,8 @@ SCM_DEFINE (scm_vector_copy, "vector-copy", 1, 0, 0,
SCM_DEFINE (scm_vector_to_list, "vector->list", 1, 0, 0,
- (SCM v),
- "Return a newly allocated list composed of the elements of @var{v}.\n"
+ (SCM vec),
+ "Return a newly allocated list composed of the elements of @var{vec}.\n"
"\n"
"@lisp\n"
"(vector->list '#(dah dah didah)) @result{} (dah dah didah)\n"
@@ -289,19 +289,12 @@ SCM_DEFINE (scm_vector_to_list, "vector->list", 1, 0, 0,
"@end lisp")
#define FUNC_NAME s_scm_vector_to_list
{
+ SCM_VALIDATE_VECTOR(1, vec);
SCM res = SCM_EOL;
- const SCM *data;
- scm_t_array_handle handle;
- size_t i, count, len;
- ssize_t inc;
-
- data = scm_vector_elements (v, &handle, &len, &inc);
- for (i = (len - 1) * inc, count = 0;
- count < len;
- i -= inc, count++)
+ ssize_t len = SCM_I_VECTOR_LENGTH (vec);
+ const SCM * data = SCM_I_VECTOR_ELTS (vec);
+ for (ssize_t i = len-1; i >= 0; --i)
res = scm_cons (data[i], res);
-
- scm_array_handle_release (&handle);
return res;
}
#undef FUNC_NAME
diff --git a/test-suite/tests/vectors.test b/test-suite/tests/vectors.test
index 97b3f187a..6db608c8e 100644
--- a/test-suite/tests/vectors.test
+++ b/test-suite/tests/vectors.test
@@ -41,11 +41,7 @@
(pass-if "string-vector 2"
(equal? '("abc\u0100" "def\u0101" "ghi\u0102")
- (vector->list #("abc\u0100" "def\u0101" "ghi\u0102"))))
-
- (pass-if "shared array"
- (let ((b (make-shared-array #(1) (lambda (x) '(0)) 2)))
- (equal? b (list->vector (vector->list b))))))
+ (vector->list #("abc\u0100" "def\u0101" "ghi\u0102")))))
(with-test-prefix "make-vector"