diff options
-rw-r--r-- | libguile/arrays.c | 5 | ||||
-rw-r--r-- | test-suite/tests/arrays.test | 5 |
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))) |