From 7ee41feba6b834d9e17e634bfbf222c4d8dd1a4f Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 23 May 2022 10:08:18 +0200 Subject: 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 --- wcsmbs/wcsmbsload.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'wcsmbs/wcsmbsload.h') diff --git a/wcsmbs/wcsmbsload.h b/wcsmbs/wcsmbsload.h index 1ff51e0f8a..8bbd34ba02 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 */ -- cgit 1.4.1