;
#define DESCRIPTION_LENGTH 255
-//#define USE_HEAP_TRACER
+#define USE_HEAP_TRACER
+//#define ALLOW_FREE_UNMANAGED
//#define RECORD_ALL_HISTORY
void* vm_calloc(size_t nmemb, size_t size, const char *fmt, ...)
va_list argptr;
va_start(argptr, fmt);
+ bool managed = true;
char description[DESCRIPTION_LENGTH];
vsnprintf(description, sizeof(description), fmt, argptr);
if (false == _tracer.Delete(ptr, description)) {
+ managed = false;
_tracer.Find(ptr);
}
- va_end(argptr);
+#ifdef ALLOW_FREE_UNMANAGED
+ free(ptr);
+#else
+ if (managed) {
+ free(ptr);
+ }
#endif
+ va_end(argptr);
+#else
free(ptr);
+#endif
} else {
LOGD("Trying to free a null pointer");
}