aboutsummaryrefslogtreecommitdiff
path: root/wcsmbs/wcsmbsload.h
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2022-05-23 10:08:18 +0200
committerFlorian Weimer <fweimer@redhat.com>2022-05-23 11:06:31 +0200
commit7ee41feba6b834d9e17e634bfbf222c4d8dd1a4f (patch)
treecae31634fe857b963791bf3697bdae20312acc2e /wcsmbs/wcsmbsload.h
parentbbebe83a2874cd25934046d908824dfc11711a2b (diff)
downloadglibc-7ee41feba6b834d9e17e634bfbf222c4d8dd1a4f.zip
glibc-7ee41feba6b834d9e17e634bfbf222c4d8dd1a4f.tar.gz
glibc-7ee41feba6b834d9e17e634bfbf222c4d8dd1a4f.tar.bz2
locale: Remove private union from struct __locale_data
This avoids an alias violation later. This commit also fixes an incorrect double-checked locking idiom in _nl_init_era_entries. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Diffstat (limited to 'wcsmbs/wcsmbsload.h')
-rw-r--r--wcsmbs/wcsmbsload.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/wcsmbs/wcsmbsload.h b/wcsmbs/wcsmbsload.h
index 1ff51e0..8bbd34b 100644
--- a/wcsmbs/wcsmbsload.h
+++ b/wcsmbs/wcsmbsload.h
@@ -66,13 +66,15 @@ extern const struct __locale_data _nl_C_LC_CTYPE attribute_hidden;
static inline const struct gconv_fcts *
get_gconv_fcts (struct __locale_data *data)
{
- if (__glibc_unlikely (data->private.ctype == NULL))
+ struct gconv_fcts *private = data->private;
+ if (private == NULL)
{
- if (__glibc_unlikely (data == &_nl_C_LC_CTYPE))
+ if (data == &_nl_C_LC_CTYPE)
return &__wcsmbs_gconv_fcts_c;
__wcsmbs_load_conv (data);
+ private = data->private;
}
- return data->private.ctype;
+ return private;
}
#endif /* wcsmbsload.h */