summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--THANKS1
-rw-r--r--libguile/ChangeLog5
-rw-r--r--libguile/unif.c64
3 files changed, 42 insertions, 28 deletions
diff --git a/THANKS b/THANKS
index 9b98b45a7..b8d24c973 100644
--- a/THANKS
+++ b/THANKS
@@ -34,6 +34,7 @@ For fixes or providing information which led to a fix:
Bill Schottstaedt
Miroslav Silovic
Dale P. Smith
+ Masao Uebayashi
Jacques A. Vidrine
Brett Viren
William Webber
diff --git a/libguile/ChangeLog b/libguile/ChangeLog
index d8cff0871..a7525c6f5 100644
--- a/libguile/ChangeLog
+++ b/libguile/ChangeLog
@@ -1,5 +1,10 @@
2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
+ * unif.c (scm_array_to_list): Added missing handling of arrays of
+ bytes. Thanks to Masao Uebayashi for the bug report.
+
+2001-04-19 Dirk Herrmann <D.Herrmann@tu-bs.de>
+
* debug.c (scm_procedure_source): Use SCM_CLOSURE_FORMALS more
consistently.
diff --git a/libguile/unif.c b/libguile/unif.c
index d183dddb9..afb0a0cf2 100644
--- a/libguile/unif.c
+++ b/libguile/unif.c
@@ -2108,36 +2108,44 @@ SCM_DEFINE (scm_array_to_list, "array->list", 1, 0, 0,
res = scm_cons (SCM_BOOL(((long *) data)[k] & mask), res);
return res;
}
- case scm_tc7_uvect: {
- long *data = (long *)SCM_VELTS(v);
- for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
- res = scm_cons(scm_ulong2num(data[k]), res);
- return res;
- }
- case scm_tc7_ivect: {
- long *data = (long *)SCM_VELTS(v);
- for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
- res = scm_cons(scm_long2num(data[k]), res);
- return res;
- }
- case scm_tc7_svect: {
- short *data;
- data = (short *)SCM_VELTS(v);
- for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
- res = scm_cons(SCM_MAKINUM (data[k]), res);
- return res;
- }
+ case scm_tc7_byvect:
+ {
+ signed char *data = (signed char *) SCM_VELTS (v);
+ scm_sizet k = SCM_UVECTOR_LENGTH (v);
+ while (k != 0)
+ res = scm_cons (SCM_MAKINUM (data[--k]), res);
+ return res;
+ }
+ case scm_tc7_uvect:
+ {
+ long *data = (long *)SCM_VELTS(v);
+ for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
+ res = scm_cons(scm_ulong2num(data[k]), res);
+ return res;
+ }
+ case scm_tc7_ivect:
+ {
+ long *data = (long *)SCM_VELTS(v);
+ for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
+ res = scm_cons(scm_long2num(data[k]), res);
+ return res;
+ }
+ case scm_tc7_svect:
+ {
+ short *data = (short *)SCM_VELTS(v);
+ for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
+ res = scm_cons(SCM_MAKINUM (data[k]), res);
+ return res;
+ }
#ifdef HAVE_LONG_LONGS
- case scm_tc7_llvect: {
- long_long *data;
- data = (long_long *)SCM_VELTS(v);
- for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
- res = scm_cons(scm_long_long2num(data[k]), res);
- return res;
- }
+ case scm_tc7_llvect:
+ {
+ long_long *data = (long_long *)SCM_VELTS(v);
+ for (k = SCM_UVECTOR_LENGTH(v) - 1; k >= 0; k--)
+ res = scm_cons(scm_long_long2num(data[k]), res);
+ return res;
+ }
#endif
-
-
case scm_tc7_fvect:
{
float *data = (float *) SCM_VELTS (v);