summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Blandy <jimb@red-bean.com>1996-11-20 21:03:38 +0000
committerJim Blandy <jimb@red-bean.com>1996-11-20 21:03:38 +0000
commitce4a361d9979cc1d8db518bcabb7c5bf8f645baa (patch)
tree9d5a21265ea26294cfe42d7c5d7da7b95c1a9df0
parentb8cae82a7e01fb9ad2e736e044af1ec80a7daa33 (diff)
downloadguile-ce4a361d9979cc1d8db518bcabb7c5bf8f645baa.tar.gz
* gc.c (scm_igc, scm_gc_mark): Round up the size of the stack we
pass to scm_mark_locations. (Thanks to Aubrey Jaffer.)
-rw-r--r--libguile/gc.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libguile/gc.c b/libguile/gc.c
index 707ec4095..f7b5d8e94 100644
--- a/libguile/gc.c
+++ b/libguile/gc.c
@@ -495,8 +495,9 @@ scm_igc (what)
/* This assumes that all registers are saved into the jmp_buf */
setjmp (scm_save_regs_gc_mark);
scm_mark_locations ((SCM_STACKITEM *) scm_save_regs_gc_mark,
- ( (scm_sizet) sizeof scm_save_regs_gc_mark
- / sizeof (SCM_STACKITEM)));
+ ( (scm_sizet) (sizeof (SCM_STACKITEM) - 1 +
+ sizeof scm_save_regs_gc_mark)
+ / sizeof (SCM_STACKITEM)));
{
/* stack_len is long rather than scm_sizet in order to guarantee that
@@ -682,7 +683,10 @@ gc_mark_nimp:
(ptr) break;
SCM_SETGC8MARK (ptr);
scm_mark_locations (SCM_VELTS (ptr),
- (scm_sizet) (SCM_LENGTH (ptr) + sizeof (scm_contregs) / sizeof (SCM_STACKITEM)));
+ (scm_sizet)
+ (SCM_LENGTH (ptr) +
+ (sizeof (SCM_STACKITEM) + -1 + sizeof (scm_contregs)) /
+ sizeof (SCM_STACKITEM)));
break;
case scm_tc7_bvect:
case scm_tc7_byvect: