|
@@ -975,7 +975,7 @@ static size_t release_unused_segments(mstate m)
|
|
mchunkptr p = align_as_chunk(base);
|
|
mchunkptr p = align_as_chunk(base);
|
|
size_t psize = chunksize(p);
|
|
size_t psize = chunksize(p);
|
|
/* Can unmap if first chunk holds entire segment and not pinned */
|
|
/* 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;
|
|
tchunkptr tp = (tchunkptr)p;
|
|
if (p == m->dv) {
|
|
if (p == m->dv) {
|
|
m->dv = 0;
|
|
m->dv = 0;
|