diff options
author | Ludovic Courtès <ludo@gnu.org> | 2008-09-10 22:27:30 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2008-09-10 22:27:30 +0200 |
commit | 35a9197ccc91a3663313e1bf7d369101754a1075 (patch) | |
tree | 0389f04f4267d26b70c8e8cd54329be28ccf438b /libguile/vectors.c | |
parent | e7bca22779c68b800c75fdad8841440dfeb32f8d (diff) | |
parent | f30e1bdf97ae8b2b2918da585f887a4d3a23a347 (diff) | |
download | guile-35a9197ccc91a3663313e1bf7d369101754a1075.tar.gz |
Merge commit 'f30e1bdf97ae8b2b2918da585f887a4d3a23a347' into boehm-demers-weiser-gc
Conflicts:
libguile/Makefile.am
libguile/coop-pthreads.c
libguile/gc-freelist.c
libguile/gc-segment.c
libguile/gc.c
libguile/private-gc.h
test-suite/tests/environments.nottest
Diffstat (limited to 'libguile/vectors.c')
-rw-r--r-- | libguile/vectors.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/libguile/vectors.c b/libguile/vectors.c index 4bc5ce611..c3107ecf1 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -476,15 +476,15 @@ SCM_DEFINE (scm_vector_to_list, "vector->list", 1, 0, 0, SCM res = SCM_EOL; const SCM *data; scm_t_array_handle handle; - size_t i, len; + size_t i, count, len; ssize_t inc; data = scm_vector_elements (v, &handle, &len, &inc); - for (i = len*inc; i > 0;) - { - i -= inc; - res = scm_cons (data[i], res); - } + for (i = (len - 1) * inc, count = 0; + count < len; + i -= inc, count++) + res = scm_cons (data[i], res); + scm_array_handle_release (&handle); return res; } |