Files
fastfetch/src/common/mallocHelper.h
T

41 lines
922 B
C
Raw Normal View History

#pragma once
2022-11-23 15:10:40 +08:00
#include <stdlib.h>
2023-06-08 21:04:56 +08:00
#include <assert.h>
2026-06-06 22:52:55 +08:00
#include "common/attributes.h"
2022-11-23 15:10:40 +08:00
#if FF_HAVE_MALLOC_USABLE_SIZE || FF_HAVE_MSVC_MSIZE
#if __has_include(<malloc.h>)
#include <malloc.h>
#else
#include <malloc_np.h> // For DragonFly BSD
#endif
#elif FF_HAVE_MALLOC_SIZE
#include <malloc/malloc.h>
#endif
2026-06-06 22:52:55 +08:00
FF_A_ALWAYS_INLINE FF_A_NONNULL(1)
2026-03-29 09:28:49 +08:00
static inline void ffWrapFree(const void* pPtr) {
assert(pPtr);
2026-03-29 09:28:49 +08:00
if (*(void**) pPtr) {
free(*(void**) pPtr);
}
2022-11-23 15:10:40 +08:00
}
2026-04-09 16:20:59 +08:00
#define FF_AUTO_FREE FF_A_CLEANUP(ffWrapFree)
// ptr MUST be a malloc'ed pointer
2026-03-29 09:28:49 +08:00
static inline size_t ffMallocUsableSize(const void* ptr) {
assert(ptr);
2026-03-29 09:28:49 +08:00
#if FF_HAVE_MALLOC_USABLE_SIZE
return malloc_usable_size((void*) ptr);
#elif FF_HAVE_MALLOC_SIZE
return malloc_size((void*) ptr);
#elif FF_HAVE_MSVC_MSIZE
return _msize((void*) ptr);
#else
(void) ptr;
return 0; // Not supported
#endif
}