aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Pall <mike>2024-04-19 01:44:19 +0200
committerMike Pall <mike>2024-04-19 01:44:19 +0200
commit9b5e837ac2dfdc0638830c048a47ca9378c504d3 (patch)
tree6e020f0ea6bba81ba31a26a1b40d72b68d813738
parentcae361187e7e1e3545353fb560c032cdace32d5f (diff)
downloadluajit-9b5e837ac2dfdc0638830c048a47ca9378c504d3.tar.gz
luajit-9b5e837ac2dfdc0638830c048a47ca9378c504d3.tar.bz2
luajit-9b5e837ac2dfdc0638830c048a47ca9378c504d3.zip
Fix segment release check in internal memory allocator.
Thanks to Jinji Zeng. #1179 #1157
-rw-r--r--src/lj_alloc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/lj_alloc.c b/src/lj_alloc.c
index 9adaa0e5..0c0c0c4f 100644
--- a/src/lj_alloc.c
+++ b/src/lj_alloc.c
@@ -975,7 +975,7 @@ static size_t release_unused_segments(mstate m)
975 mchunkptr p = align_as_chunk(base); 975 mchunkptr p = align_as_chunk(base);
976 size_t psize = chunksize(p); 976 size_t psize = chunksize(p);
977 /* Can unmap if first chunk holds entire segment and not pinned */ 977 /* Can unmap if first chunk holds entire segment and not pinned */
978 if (!cinuse(p) && (char *)p + psize >= base + size - TOP_FOOT_SIZE) { 978 if (!cinuse(p) && (char *)p + psize == (char *)mem2chunk(sp)) {
979 tchunkptr tp = (tchunkptr)p; 979 tchunkptr tp = (tchunkptr)p;
980 if (p == m->dv) { 980 if (p == m->dv) {
981 m->dv = 0; 981 m->dv = 0;