diff options
author | Florian Weimer <fweimer@redhat.com> | 2022-05-23 10:08:18 +0200 |
---|---|---|
committer | Florian Weimer <fweimer@redhat.com> | 2022-05-23 11:06:31 +0200 |
commit | 7ee41feba6b834d9e17e634bfbf222c4d8dd1a4f (patch) | |
tree | cae31634fe857b963791bf3697bdae20312acc2e /wcsmbs/wcsmbsload.h | |
parent | bbebe83a2874cd25934046d908824dfc11711a2b (diff) | |
download | glibc-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.h | 8 |
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 */ |