summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libguile/weaks.c7
-rw-r--r--libguile/weaks.h1
2 files changed, 5 insertions, 3 deletions
diff --git a/libguile/weaks.c b/libguile/weaks.c
index b005acc55..aaf246ded 100644
--- a/libguile/weaks.c
+++ b/libguile/weaks.c
@@ -58,11 +58,12 @@ scm_make_weak_vector (k, fill)
SCM fill;
{
SCM v;
- v = scm_make_vector (scm_sum (k, SCM_MAKINUM (1)), fill);
+ v = scm_make_vector (scm_sum (k, SCM_MAKINUM (2)), fill);
SCM_DEFER_INTS;
SCM_SETLENGTH(v, SCM_INUM (k), scm_tc7_wvect);
- SCM_VELTS(v)[0] = (SCM)0;
- SCM_SETVELTS(v, SCM_VELTS(v) + 1);
+ SCM_VELTS(v)[0] = SCM_EOL;
+ SCM_VELTS(v)[1] = (SCM)0;
+ SCM_SETVELTS(v, SCM_VELTS(v) + 2);
SCM_ALLOW_INTS;
return v;
}
diff --git a/libguile/weaks.h b/libguile/weaks.h
index f9130aed3..cedfbc6c0 100644
--- a/libguile/weaks.h
+++ b/libguile/weaks.h
@@ -54,6 +54,7 @@
#define SCM_IS_WHVEC_V(X) (SCM_VELTS(X)[-1] == 2)
#define SCM_IS_WHVEC_B(X) (SCM_VELTS(X)[-1] == 3)
#define SCM_IS_WHVEC_ANY(X) (SCM_VELTS(X)[-1])
+#define SCM_WVECT_GC_CHAIN(X) (SCM_VELTS(X)[-2])