Avoid crash when calling __localeconv_l with __C_locale
__C_locale is const. Thus, overwriting the lconv values in __localeconv_l will try to write to a R/O region. Given the lconv values in __C_locale are initialized, there's no reason to write them in __localeconv_l at all. Just return &__C_locale.lconv. Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
2fd2f308e2
commit
a703d64ad7
|
@ -6,6 +6,9 @@ struct lconv *
|
||||||
__localeconv_l (struct __locale_t *locale)
|
__localeconv_l (struct __locale_t *locale)
|
||||||
{
|
{
|
||||||
struct lconv *lconv = &locale->lconv;
|
struct lconv *lconv = &locale->lconv;
|
||||||
|
if (locale == __get_C_locale ())
|
||||||
|
return lconv;
|
||||||
|
|
||||||
#ifdef __HAVE_LOCALE_INFO__
|
#ifdef __HAVE_LOCALE_INFO__
|
||||||
const struct lc_numeric_T *n = __get_numeric_locale (locale);
|
const struct lc_numeric_T *n = __get_numeric_locale (locale);
|
||||||
const struct lc_monetary_T *m = __get_monetary_locale (locale);
|
const struct lc_monetary_T *m = __get_monetary_locale (locale);
|
||||||
|
|
Loading…
Reference in New Issue