diff options
| -rw-r--r-- | src/internal/libc.h | 2 | ||||
| -rw-r--r-- | src/internal/locale_impl.h | 6 | ||||
| -rw-r--r-- | src/locale/setlocale.c | 7 | ||||
| -rw-r--r-- | src/locale/uselocale.c | 10 | ||||
| -rw-r--r-- | src/thread/pthread_create.c | 6 | 
5 files changed, 4 insertions, 27 deletions
| diff --git a/src/internal/libc.h b/src/internal/libc.h index 51ee1860..212f0e8b 100644 --- a/src/internal/libc.h +++ b/src/internal/libc.h @@ -23,8 +23,6 @@ struct __libc {  	volatile int ofl_lock[2];  	size_t tls_size;  	size_t page_size; -	volatile int uselocale_cnt; -	volatile int bytelocale_cnt_minus_1;  	struct __locale_struct global_locale;  }; diff --git a/src/internal/locale_impl.h b/src/internal/locale_impl.h index 9142f0c2..5aebbf68 100644 --- a/src/internal/locale_impl.h +++ b/src/internal/locale_impl.h @@ -20,11 +20,9 @@ const char *__lctrans_cur(const char *);  #define LCTRANS(msg, lc, loc) __lctrans(msg, (loc)->cat[(lc)-2])  #define LCTRANS_CUR(msg) __lctrans_cur(msg) -#define CURRENT_LOCALE \ -	(libc.uselocale_cnt ? __pthread_self()->locale : &libc.global_locale) +#define CURRENT_LOCALE (__pthread_self()->locale) -#define CURRENT_UTF8 \ -	(libc.bytelocale_cnt_minus_1<0 || __pthread_self()->locale->ctype_utf8) +#define CURRENT_UTF8 (__pthread_self()->locale->ctype_utf8)  #undef MB_CUR_MAX  #define MB_CUR_MAX (CURRENT_UTF8 ? 4 : 1) diff --git a/src/locale/setlocale.c b/src/locale/setlocale.c index 8ea389a3..d797f43f 100644 --- a/src/locale/setlocale.c +++ b/src/locale/setlocale.c @@ -55,12 +55,7 @@ char *setlocale(int cat, const char *name)  		return buf;  	} -	if (name) { -		int adj = libc.global_locale.ctype_utf8; -		__setlocalecat(&libc.global_locale, cat, name); -		adj -= libc.global_locale.ctype_utf8; -		if (adj) a_fetch_add(&libc.bytelocale_cnt_minus_1, adj); -	} +	if (name) __setlocalecat(&libc.global_locale, cat, name);  	switch (cat) {  	case LC_CTYPE: diff --git a/src/locale/uselocale.c b/src/locale/uselocale.c index 51067957..b70a0c18 100644 --- a/src/locale/uselocale.c +++ b/src/locale/uselocale.c @@ -10,15 +10,7 @@ locale_t __uselocale(locale_t new)  	if (new == LC_GLOBAL_LOCALE) new = global; -	if (new && new != old) { -		int adj = 0; -		if (new == global) a_dec(&libc.uselocale_cnt); -		else if (!new->ctype_utf8) adj++; -		if (old == global) a_inc(&libc.uselocale_cnt); -		else if (!old->ctype_utf8) adj--; -		a_fetch_add(&libc.bytelocale_cnt_minus_1, adj); -		self->locale = new; -	} +	self->locale = new;  	return old == global ? LC_GLOBAL_LOCALE : old;  } diff --git a/src/thread/pthread_create.c b/src/thread/pthread_create.c index 4eb8b888..de72818d 100644 --- a/src/thread/pthread_create.c +++ b/src/thread/pthread_create.c @@ -67,12 +67,6 @@ _Noreturn void __pthread_exit(void *result)  		exit(0);  	} -	if (self->locale != &libc.global_locale) { -		a_dec(&libc.uselocale_cnt); -		if (self->locale->ctype_utf8) -			a_dec(&libc.bytelocale_cnt_minus_1); -	} -  	/* Process robust list in userspace to handle non-pshared mutexes  	 * and the detached thread case where the robust list head will  	 * be invalid when the kernel would process it. */ | 
