Browse Source

1

congestion
Evgeny 5 months ago
parent
commit
7b305e820f
  1. 10
      lib/mem.c

10
lib/mem.c

@ -194,7 +194,7 @@ void u_free_impl(void* ptr, const char* location) {
} }
UNLOCK(); UNLOCK();
if (!found) { if (!found) {
printf("%s: u_free: Attempt to free unallocated or already freed pointer %p\n", location, ptr); DEBUG_ERROR(DEBUG_CATEGORY_MEMORY, "%s: u_free: Attempt to free unallocated or already freed pointer %p\n", location, ptr);
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
free(base); free(base);
@ -214,10 +214,10 @@ void u_report_unfreed_blocks(void) {
void* head = allocated_head; void* head = allocated_head;
UNLOCK(); UNLOCK();
if (count == 0) { if (count == 0) {
printf("No unfreed memory blocks.\n"); DEBUG_INFO(DEBUG_CATEGORY_MEMORY, "No unfreed memory blocks.\n");
return; return;
} }
printf("Unfreed memory blocks: %zu\n", count); DEBUG_ERROR(DEBUG_CATEGORY_MEMORY, "Unfreed memory blocks: %zu\n", count);
void* curr = head; void* curr = head;
while (curr) { while (curr) {
char* alloc_loc = (char*)curr; char* alloc_loc = (char*)curr;
@ -225,8 +225,8 @@ void u_report_unfreed_blocks(void) {
uint32_t size = *(uint32_t*)(prefix_start + BOUNDARY_CHECK_SIZE + 4); uint32_t size = *(uint32_t*)(prefix_start + BOUNDARY_CHECK_SIZE + 4);
void* user_ptr = prefix_start + BOUNDARY_CHECK_SIZE + 8; void* user_ptr = prefix_start + BOUNDARY_CHECK_SIZE + 8;
u_check(user_ptr, "unfreed_check", "u_report_unfreed_blocks"); u_check(user_ptr, "unfreed_check", "u_report_unfreed_blocks");
printf(" - Allocated at: %s, size: %u bytes\n", alloc_loc, size); DEBUG_ERROR(DEBUG_CATEGORY_MEMORY, " - Allocated at: %s, size: %u bytes\n", alloc_loc, size);
printf(" Full memory dump at %p:\n", user_ptr); DEBUG_ERROR(DEBUG_CATEGORY_MEMORY, " Full memory dump at %p:\n", user_ptr);
hex_dump(user_ptr, size); hex_dump(user_ptr, size);
curr = *(void**)((uint8_t*)curr + NEXT_OFFSET); curr = *(void**)((uint8_t*)curr + NEXT_OFFSET);
} }

Loading…
Cancel
Save