prevent relocatable maxpage from extending beyond real_maxpage due to hole - gcl.git - GNU Common Lisp

index : gcl.git
GNU Common Lisp
summary refs log tree commit diff
diff options
context:
space:
mode:
authorCamm Maguire <camm@debian.org>2013年10月23日 17:42:19 +0000
committerCamm Maguire <camm@debian.org>2013年10月23日 18:59:56 +0000
commit92d9d52591c281218cf85a21dfb40a40a1424574 (patch)
tree26f9a15de3db89e08289b574f304af730913a1e5
parent9b17f38c25f7d200fbb81870df8748bba03ce79d (diff)
downloadgcl-92d9d52591c281218cf85a21dfb40a40a1424574.tar.gz
prevent relocatable maxpage from extending beyond real_maxpage due to hole
Diffstat
-rw-r--r--gcl/o/alloc.c 1
-rwxr-xr-xgcl/o/main.c 2
2 files changed, 2 insertions, 1 deletions
diff --git a/gcl/o/alloc.c b/gcl/o/alloc.c
index e31917b6e..07e29713a 100644
--- a/gcl/o/alloc.c
+++ b/gcl/o/alloc.c
@@ -273,6 +273,7 @@ set_tm_maxpage(struct typemanager *tm,fixnum n) {
fixnum r=tm->tm_type==t_relocatable,j=tm->tm_maxpage,z=(n-j)*(r ? 2 : 1);
if (z>available_pages) return 0;
+ if (r && 2*n+page(REAL_RB_START)>real_maxpage) return 0;
available_pages-=z;
tm->tm_adjgbccnt*=((double)j)/n;
tm->tm_maxpage=n;
diff --git a/gcl/o/main.c b/gcl/o/main.c
index 83f9e8260..16800824a 100755
--- a/gcl/o/main.c
+++ b/gcl/o/main.c
@@ -209,7 +209,7 @@ update_real_maxpage(void) {
j*=starting_relb_heap_mult;
j=j<k ? j : k;
if (maxrbpage<j)
- massert(set_tm_maxpage(tm_table+t_relocatable,j));
+ set_tm_maxpage(tm_table+t_relocatable,j);
return 0;
generated by cgit v1.2.3 (git 2.39.1) at 2025年09月02日 01:15:21 +0000

AltStyle によって変換されたページ (->オリジナル) /