From d35978e7558270489f11863fd9e8182961d62335 Mon Sep 17 00:00:00 2001 From: Romain Geissler Date: Mon, 22 May 2023 12:53:10 +0000 Subject: [PATCH] Define reallocarr as weak to avoid symbol collision on gnu/Linux. Closes #744. Signed-off-by: Romain Geissler --- src/alloc-override.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/alloc-override.c b/src/alloc-override.c index 873065dc..cd9973a2 100644 --- a/src/alloc-override.c +++ b/src/alloc-override.c @@ -260,7 +260,10 @@ extern "C" { void cfree(void* p) { mi_free(p); } void* pvalloc(size_t size) { return mi_pvalloc(size); } void* reallocarray(void* p, size_t count, size_t size) { return mi_reallocarray(p, count, size); } -int reallocarr(void* p, size_t count, size_t size) { return mi_reallocarr(p, count, size); } +// reallocarr is defined weak as it may result in duplicated symbols errors if linked against other +// libraries like libedit which have defined a configure-time replacement for reallocarr on systems +// where the default libc doesn't provide this symbol (ie Linux using glibc). +__attribute__((weak)) int reallocarr(void* p, size_t count, size_t size) { return mi_reallocarr(p, count, size); } void* memalign(size_t alignment, size_t size) { return mi_memalign(alignment, size); } void* _aligned_malloc(size_t alignment, size_t size) { return mi_aligned_alloc(alignment, size); }