From fcdf9d7de5363259e33be29bccc8b2b5dc091af8 Mon Sep 17 00:00:00 2001 From: Konstantin Belousov Date: Wed, 2 Feb 2022 19:23:55 +0200 Subject: [PATCH] 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 528403693ad..e0756877539 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; }