]> git.ipfire.org Git - thirdparty/LuaJIT.git/commitdiff
Fix segment release check in internal memory allocator.
authorMike Pall <mike>
Thu, 18 Apr 2024 23:44:19 +0000 (01:44 +0200)
committerMike Pall <mike>
Thu, 18 Apr 2024 23:44:19 +0000 (01:44 +0200)
Thanks to Jinji Zeng. #1179 #1157

src/lj_alloc.c

index 9adaa0e5bd4c2533319677d1c926f7bb4a871e96..0c0c0c4f4c2c4dbaf3074eb4d7beb51ef6e0db80 100644 (file)
@@ -975,7 +975,7 @@ static size_t release_unused_segments(mstate m)
       mchunkptr p = align_as_chunk(base);
       size_t psize = chunksize(p);
       /* Can unmap if first chunk holds entire segment and not pinned */
-      if (!cinuse(p) && (char *)p + psize >= base + size - TOP_FOOT_SIZE) {
+      if (!cinuse(p) && (char *)p + psize == (char *)mem2chunk(sp)) {
        tchunkptr tp = (tchunkptr)p;
        if (p == m->dv) {
          m->dv = 0;