fix memory_hook placement
This commit is contained in:
parent
391f297dc6
commit
adf6c06b0f
|
|
@ -3492,14 +3492,13 @@ grow_heap(h, diff) heap_info *h; long diff;
|
|||
|
||||
if(diff >= 0) {
|
||||
diff = (diff + page_mask) & ~page_mask;
|
||||
memory_hook->inc_heap(diff);
|
||||
new_size = (long)h->size + diff;
|
||||
if(new_size > HEAP_MAX_SIZE)
|
||||
return -1;
|
||||
if(mprotect((char *)h + h->size, diff, PROT_READ|PROT_WRITE) != 0)
|
||||
return -2;
|
||||
memory_hook->inc_heap(diff);
|
||||
} else {
|
||||
memory_hook->dec_heap(-diff);
|
||||
new_size = (long)h->size + diff;
|
||||
if(new_size < (long)sizeof(*h))
|
||||
return -1;
|
||||
|
|
@ -3509,6 +3508,7 @@ grow_heap(h, diff) heap_info *h; long diff;
|
|||
MAP_PRIVATE|MAP_FIXED) == (char *) MAP_FAILED)
|
||||
return -2;
|
||||
/*fprintf(stderr, "shrink %p %08lx\n", h, new_size);*/
|
||||
memory_hook->dec_heap(-diff);
|
||||
}
|
||||
h->size = new_size;
|
||||
return 0;
|
||||
|
|
@ -3517,8 +3517,8 @@ grow_heap(h, diff) heap_info *h; long diff;
|
|||
/* Delete a heap. */
|
||||
|
||||
#define delete_heap(heap) { \
|
||||
munmap((char*)(heap), HEAP_MAX_SIZE); \
|
||||
memory_hook->dec_heap(heap->size); \
|
||||
munmap((char*)(heap), HEAP_MAX_SIZE); \
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
@ -4806,6 +4806,7 @@ static Void_t* sYSMALLOc(nb, av) INTERNAL_SIZE_T nb; mstate av;
|
|||
mp_.max_total_mem = sum;
|
||||
#endif
|
||||
|
||||
memory_hook->inc_heap(size);
|
||||
check_chunk(av, p);
|
||||
|
||||
return chunk2mem(p);
|
||||
|
|
@ -5292,8 +5293,8 @@ munmap_chunk(p) mchunkptr p;
|
|||
mp_.n_mmaps--;
|
||||
mp_.mmapped_mem -= (size + p->prev_size);
|
||||
|
||||
ret = munmap((char *)p - p->prev_size, size + p->prev_size);
|
||||
memory_hook->dec_heap(size + p->prev_size);
|
||||
ret = munmap((char *)p - p->prev_size, size + p->prev_size);
|
||||
|
||||
/* munmap returns non-zero on failure */
|
||||
assert(ret == 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue