summaryrefslogtreecommitdiff
path: root/src/locale/setlocale.c
diff options
context:
space:
mode:
authorJakob Kaivo <jkk@ung.org>2024-05-28 14:56:06 -0400
committerJakob Kaivo <jkk@ung.org>2024-05-28 14:56:06 -0400
commitb4cd7036bea6c6440fbbcdaebe53c864c87a5646 (patch)
tree260670ad9a9637c8c36d84b9cf77ec412017b038 /src/locale/setlocale.c
parenta69b11fd8974a898a26081950bd4add7c82ea45d (diff)
integrate jkmalloc/prep for readonly
Diffstat (limited to 'src/locale/setlocale.c')
-rw-r--r--src/locale/setlocale.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/locale/setlocale.c b/src/locale/setlocale.c
index bfc15342..43a69787 100644
--- a/src/locale/setlocale.c
+++ b/src/locale/setlocale.c
@@ -3,11 +3,13 @@
#include <stdlib.h>
#include "_locale.h"
#include "_safety.h"
+#include "_readonly.h"
/** get or set program locale **/
char * setlocale(int category, const char *locale)
{
+ static char *retname = NULL;
struct __locale_t *l = __get_locale();
int mask = 0;
@@ -42,7 +44,13 @@ char * setlocale(int category, const char *locale)
}
/* TODO: mark return value read-only */
- return __load_locale(l, mask, locale);
+ if (retname == NULL) {
+ retname = __readonly(RO_ALLOC, "setlocale");
+ }
+ __readonly(RO_UNLOCK, retname);
+ strcpy(retname, __load_locale(l, mask, locale));
+ //__readonly(RO_LOCK, retname);
+ return retname;
}
CHECK_2(char *, NULL, setlocale, int, const char *)