summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2020-12-09 17:11:05 -0500
committerRich Felker <dalias@aerifal.cx>2020-12-09 17:11:05 -0500
commit1e4204d522670a1d8b8ab85f1cfefa960547e8af (patch)
tree807a8e86728f9b18e6f18d9ed0b75fe22e8a020c
parent36246b347cd135399bc79f9b6617d9a120c00a0d (diff)
downloadmusl-1e4204d522670a1d8b8ab85f1cfefa960547e8af.tar.gz
musl-1e4204d522670a1d8b8ab85f1cfefa960547e8af.tar.bz2
musl-1e4204d522670a1d8b8ab85f1cfefa960547e8af.tar.xz
musl-1e4204d522670a1d8b8ab85f1cfefa960547e8af.zip
use libc-internal malloc for newlocale/freelocale
this is necessary for MT-fork correctness now that the code runs under locale lock. it would not be hard to avoid, but __get_locale is already using libc-internal malloc anyway. this can be reconsidered during locale overhaul later if needed.
-rw-r--r--src/locale/freelocale.c5
-rw-r--r--src/locale/newlocale.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/src/locale/freelocale.c b/src/locale/freelocale.c
index 802b8bfe..385d1206 100644
--- a/src/locale/freelocale.c
+++ b/src/locale/freelocale.c
@@ -1,6 +1,11 @@
#include <stdlib.h>
#include "locale_impl.h"
+#define malloc undef
+#define calloc undef
+#define realloc undef
+#define free __libc_free
+
void freelocale(locale_t l)
{
if (__loc_is_allocated(l)) free(l);
diff --git a/src/locale/newlocale.c b/src/locale/newlocale.c
index 12ae87d6..9ac3cd38 100644
--- a/src/locale/newlocale.c
+++ b/src/locale/newlocale.c
@@ -4,6 +4,11 @@
#include "locale_impl.h"
#include "lock.h"
+#define malloc __libc_malloc
+#define calloc undef
+#define realloc undef
+#define free undef
+
static int default_locale_init_done;
static struct __locale_struct default_locale, default_ctype_locale;