diff --git a/src/mzscheme/src/setjmpup.c b/src/mzscheme/src/setjmpup.c index efc45072a0..2a10c2be58 100644 --- a/src/mzscheme/src/setjmpup.c +++ b/src/mzscheme/src/setjmpup.c @@ -409,6 +409,12 @@ static long find_same(char *p, char *low, long max_size) prevent stack overflow. */ # define MAX_STACK_DIFF 4096 +#ifdef SIXTY_FOUR_BIT_INTEGERS +# define SHARED_STACK_ALIGNMENT 8 +#else +# define SHARED_STACK_ALIGNMENT 4 +#endif + if (max_size > MAX_STACK_DIFF) { cnt = max_size - MAX_STACK_DIFF; max_size = MAX_STACK_DIFF; @@ -428,6 +434,10 @@ static long find_same(char *p, char *low, long max_size) } } + if (cnt & (SHARED_STACK_ALIGNMENT - 1)) { + cnt -= (cnt & (SHARED_STACK_ALIGNMENT - 1)); + } + return cnt; }