From adf6c06b0f1d8750e5e76bff349f3f5b507c53d7 Mon Sep 17 00:00:00 2001 From: David Rose Date: Fri, 13 Jul 2007 17:23:54 +0000 Subject: [PATCH] fix memory_hook placement --- dtool/src/dtoolbase/ptmalloc2_smp_src.cxx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/dtool/src/dtoolbase/ptmalloc2_smp_src.cxx b/dtool/src/dtoolbase/ptmalloc2_smp_src.cxx index cb4f14969e..649c9e8bae 100644 --- a/dtool/src/dtoolbase/ptmalloc2_smp_src.cxx +++ b/dtool/src/dtoolbase/ptmalloc2_smp_src.cxx @@ -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);