git: fcdf9d7de536 - main - xlocale.c:init_key(): do not ignore errors from pthread_key_create()
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 03 Feb 2022 02:49:26 UTC
The branch main has been updated by kib:
URL: https://cgit.FreeBSD.org/src/commit/?id=fcdf9d7de5363259e33be29bccc8b2b5dc091af8
commit fcdf9d7de5363259e33be29bccc8b2b5dc091af8
Author: Konstantin Belousov <kib@FreeBSD.org>
AuthorDate: 2022-02-02 17:23:55 +0000
Commit: Konstantin Belousov <kib@FreeBSD.org>
CommitDate: 2022-02-03 01:02:58 +0000
xlocale.c:init_key(): do not ignore errors from pthread_key_create()
Reviewed by: markj
Sponsored by: The FreeBSD Foundation
MFC after: 1 week
Differential revision: https://reviews.freebsd.org/D34140
---
lib/libc/locale/xlocale.c | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)
diff --git a/lib/libc/locale/xlocale.c b/lib/libc/locale/xlocale.c
index 528403693ad4..e07568775394 100644
--- a/lib/libc/locale/xlocale.c
+++ b/lib/libc/locale/xlocale.c
@@ -117,11 +117,16 @@ static locale_t thread_local_locale;
static void
init_key(void)
{
+ int error;
- pthread_key_create(&locale_info_key, xlocale_release);
- pthread_setspecific(locale_info_key, (void*)42);
- if (pthread_getspecific(locale_info_key) == (void*)42) {
- pthread_setspecific(locale_info_key, 0);
+ error = pthread_key_create(&locale_info_key, xlocale_release);
+ if (error == 0) {
+ pthread_setspecific(locale_info_key, (void*)42);
+ if (pthread_getspecific(locale_info_key) == (void*)42) {
+ pthread_setspecific(locale_info_key, 0);
+ } else {
+ fake_tls = 1;
+ }
} else {
fake_tls = 1;
}