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 /src | |
| 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
Diffstat (limited to 'src')
| -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; |
