diff options
-rw-r--r-- | libguile/weaks.c | 7 | ||||
-rw-r--r-- | libguile/weaks.h | 1 |
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]) |