summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/arrays.c5
-rw-r--r--test-suite/tests/arrays.test5
2 files changed, 7 insertions, 3 deletions
diff --git a/libguile/arrays.c b/libguile/arrays.c
index 2a6678d5b..702faacbe 100644
--- a/libguile/arrays.c
+++ b/libguile/arrays.c
@@ -589,9 +589,8 @@ SCM_DEFINE (scm_array_contents, "array-contents", 1, 1, 0,
}
v = SCM_I_ARRAY_V (ra);
- if ((len == scm_c_array_length (v)) && (0 == SCM_I_ARRAY_BASE (ra))
- && SCM_I_ARRAY_DIMS (ra)->inc)
- return v;
+ if ((len == scm_c_array_length (v)) && (0 == SCM_I_ARRAY_BASE (ra)))
+ return v;
else
{
SCM sra = scm_i_make_array (1);
diff --git a/test-suite/tests/arrays.test b/test-suite/tests/arrays.test
index c02915639..415f183fe 100644
--- a/test-suite/tests/arrays.test
+++ b/test-suite/tests/arrays.test
@@ -325,6 +325,11 @@
(let* ((a (make-array 0 4 4)))
(not (array-contents (transpose-array a 1 0) #t))))
+ ;; This is a consequence of (array-contents? a #t) => #t.
+ (pass-if "empty array"
+ (let ((a (make-typed-array 'f64 2 0 0)))
+ (f64vector? (array-contents a))))
+
(pass-if "broadcast vector I"
(let* ((a (make-array 0 4))
(b (make-shared-array a (lambda (i j k) (list k)) 1 1 4)))