~ chicken-core (chicken-5) 24df3271dfae12532dcd74a9a5428f2140587a2d
commit 24df3271dfae12532dcd74a9a5428f2140587a2d Author: Peter Bex <peter.bex@xs4all.nl> AuthorDate: Thu Jun 21 20:43:43 2012 +0200 Commit: Christian Kellermann <ckeen@pestilenz.org> CommitDate: Fri Jun 22 12:11:43 2012 +0200 Fix out-of-memory check so it includes alignment (and prevent future bugs by removing the code duplication) Signed-off-by: Christian Kellermann <ckeen@pestilenz.org> diff --git a/runtime.c b/runtime.c index bf4e578a..b0ccc85a 100644 --- a/runtime.c +++ b/runtime.c @@ -3346,11 +3346,11 @@ C_regparm void C_fcall really_remark(C_word *x) n = C_header_size(p); bytes = (h & C_BYTEBLOCK_BIT) ? n : n * sizeof(C_word); - if(((C_byte *)p2 + bytes + sizeof(C_word)) > new_tospace_limit) { + new_tospace_top = ((C_byte *)p2 + C_align(bytes) + sizeof(C_word)); + if(new_tospace_top > new_tospace_limit) { panic(C_text("out of memory - heap full while resizing")); } - new_tospace_top = (C_byte *)p2 + C_align(bytes) + sizeof(C_word); *x = (C_word)p2; p2->header = h; assert(!is_fptr(h));Trap