From c367c4b44eb9a20137930ec8771c69da9cec50a3 Mon Sep 17 00:00:00 2001 From: Ludovic Courtes Date: Tue, 2 May 2006 21:30:58 +0000 Subject: [PATCH] Fixed printing of weak vectors. * libguile/print.c (iprin1): When displaying a weak vector, access elements via `scm_c_vector_ref ()', not via the macro. git-archimport-id: lcourtes@laas.fr--2005-libre/guile-core--boehm-gc--1.9--patch-14 --- libguile/print.c | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/libguile/print.c b/libguile/print.c index d81127da4..605a84a5b 100644 --- a/libguile/print.c +++ b/libguile/print.c @@ -625,16 +625,30 @@ iprin1 (SCM exp, SCM port, scm_print_state *pstate) last = pstate->length - 1; cutp = 1; } - for (i = 0; i < last; ++i) + if (SCM_I_WVECTP (exp)) { - /* CHECK_INTS; */ - scm_iprin1 (SCM_SIMPLE_VECTOR_REF (exp, i), port, pstate); - scm_putc (' ', port); + /* Elements of weak vectors may not be accessed via the + `SIMPLE_VECTOR_REF ()' macro. */ + for (i = 0; i < last; ++i) + { + scm_iprin1 (scm_c_vector_ref (exp, i), + port, pstate); + scm_putc (' ', port); + } } + else + { + for (i = 0; i < last; ++i) + { + scm_iprin1 (SCM_SIMPLE_VECTOR_REF (exp, i), port, pstate); + scm_putc (' ', port); + } + } + if (i == last) { /* CHECK_INTS; */ - scm_iprin1 (SCM_SIMPLE_VECTOR_REF (exp, i), port, pstate); + scm_iprin1 (scm_c_vector_ref (exp, i), port, pstate); } if (cutp) scm_puts (" ...", port);