diff options
Diffstat (limited to 'src/rt/rust.cpp')
| -rw-r--r-- | src/rt/rust.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/src/rt/rust.cpp b/src/rt/rust.cpp index 00e709c9..37398655 100644 --- a/src/rt/rust.cpp +++ b/src/rt/rust.cpp @@ -1,13 +1,12 @@ #include "rust_internal.h" -#include "util/array_list.h" -// #define TRACK_ALLOCATIONS +#define TRACK_ALLOCATIONS // For debugging, keeps track of live allocations, so you can find out // exactly what leaked. -#ifdef TRACK_ALLOCATIONS -array_list<void *> allocation_list; -#endif +//#ifdef TRACK_ALLOCATIONS +//array_list<void *> allocation_list; +//#endif rust_srv::rust_srv() : live_allocs(0) @@ -70,16 +69,18 @@ rust_srv::realloc(void *p, size_t bytes) void rust_srv::free(void *p) { - if (live_allocs < 1) { - fatal("live_allocs < 1", __FILE__, __LINE__); - } - live_allocs--; - ::free(p); #ifdef TRACK_ALLOCATIONS if (allocation_list.replace(p, NULL) == NULL) { + printf("ptr 0x%" PRIxPTR " is not in allocation_list\n", + (uintptr_t) p); fatal("not in allocation_list", __FILE__, __LINE__); } #endif + if (live_allocs < 1) { + fatal("live_allocs < 1", __FILE__, __LINE__); + } + live_allocs--; + ::free(p); } void |