diff options
author | Ludovic Courtès <ludo@gnu.org> | 2006-11-29 09:05:10 +0000 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2006-11-29 09:05:10 +0000 |
commit | 22be72d35f90fa94f5dd09444cd891e2bb963cc8 (patch) | |
tree | 4cb46402999888e2b74fbe55d63769f6390511e0 /libguile | |
parent | 5b3a39c7ff472eee3978784549a6902c09600810 (diff) | |
download | guile-22be72d35f90fa94f5dd09444cd891e2bb963cc8.tar.gz |
Changes from arch/CVS synchronization
Diffstat (limited to 'libguile')
-rw-r--r-- | libguile/ChangeLog | 7 | ||||
-rw-r--r-- | libguile/vectors.c | 12 |
2 files changed, 13 insertions, 6 deletions
diff --git a/libguile/ChangeLog b/libguile/ChangeLog index cc567810b..e0a50633e 100644 --- a/libguile/ChangeLog +++ b/libguile/ChangeLog @@ -1,3 +1,10 @@ +2006-11-29 Ludovic Courtès <ludovic.courtes@laas.fr> + + * libguile/vectors.c (scm_vector_to_list): Fixed list + construction: elements were not copied when INC is zero (see + "shared array" example in `vectors.test'). Reported by + Szavai Gyula. + 2006-11-18 Ludovic Courtès <ludovic.courtes@laas.fr> * Makefile.am (lib_LTLIBRARIES): Added `libguile-i18n-v-XX.la'. diff --git a/libguile/vectors.c b/libguile/vectors.c index 7a6fdfd92..fef48cc3e 100644 --- a/libguile/vectors.c +++ b/libguile/vectors.c @@ -392,15 +392,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; } |