diff options
author | Mike Pall <mike> | 2024-04-19 01:44:19 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2024-04-19 01:44:19 +0200 |
commit | 9b5e837ac2dfdc0638830c048a47ca9378c504d3 (patch) | |
tree | 6e020f0ea6bba81ba31a26a1b40d72b68d813738 | |
parent | cae361187e7e1e3545353fb560c032cdace32d5f (diff) | |
download | luajit-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.c | 2 |
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; |