Skip to content

Commit

Permalink
SDL_test: disable memory tracking if SDL does not count allocations
Browse files Browse the repository at this point in the history
  • Loading branch information
madebr committed Dec 21, 2024
1 parent 883223a commit e26c352
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion src/test/SDL_test_memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,11 @@ static SDL_malloc_func SDL_malloc_orig = NULL;
static SDL_calloc_func SDL_calloc_orig = NULL;
static SDL_realloc_func SDL_realloc_orig = NULL;
static SDL_free_func SDL_free_orig = NULL;
#ifdef TRACK_ALLOCATION_COUNT
static int s_previous_allocations = 0;
#else
static int s_unknown_frees = 0;
#endif
static SDL_tracked_allocation *s_tracked_allocations[256];
static bool s_randfill_allocations = false;
static SDL_AtomicInt s_lock;
Expand Down Expand Up @@ -211,6 +215,9 @@ static void SDL_UntrackAllocation(void *mem)
}
prev = entry;
}
#ifndef TRACK_ALLOCATION_COUNT
s_unknown_frees += 1;
#endif
UNLOCK_ALLOCATOR();
}

Expand Down Expand Up @@ -277,9 +284,11 @@ static void SDLCALL SDLTest_TrackedFree(void *ptr)
return;
}

#ifdef TRACK_ALLOCATION_COUNT
if (!s_previous_allocations) {
SDL_assert(SDL_IsAllocationTracked(ptr));
}
#endif
SDL_UntrackAllocation(ptr);
SDL_free_orig(ptr);
}
Expand All @@ -292,10 +301,14 @@ void SDLTest_TrackAllocations(void)

SDLTest_Crc32Init(&s_crc32_context);

#ifdef TRACK_ALLOCATION_COUNT
s_previous_allocations = SDL_GetNumAllocations();
if (s_previous_allocations != 0) {
SDL_Log("SDLTest_TrackAllocations(): There are %d previous allocations, disabling free() validation", s_previous_allocations);
}
#else
SDL_Log("SDL was built without allocation count support, disabling free() validation");
#endif
#ifdef SDLTEST_UNWIND_NO_PROC_NAME_BY_IP
do {
/* Don't use SDL_GetHint: SDL_malloc is off limits. */
Expand Down Expand Up @@ -439,7 +452,15 @@ void SDLTest_LogAllocations(void)
++count;
}
}
(void)SDL_snprintf(line, sizeof(line), "Total: %.2f Kb in %d allocations\n", total_allocated / 1024.0, count);
(void)SDL_snprintf(line, sizeof(line), "Total: %.2f Kb in %d allocations", total_allocated / 1024.0, count);
ADD_LINE();
#ifndef TRACK_ALLOCATION_COUNT
if (s_unknown_frees != 0) {
(void)SDL_snprintf(line, sizeof(line), ", %d unknown frees", s_unknown_frees);
ADD_LINE();
}
#endif
(void)SDL_snprintf(line, sizeof(line), "\n");
ADD_LINE();
#undef ADD_LINE

Expand Down

0 comments on commit e26c352

Please sign in to comment.