mirror of
https://git.FreeBSD.org/src.git
synced 2024-10-19 02:29:40 +00:00
Revert "libc/locale: Fix races between localeconv(3) and setlocale(3)"
This reverts commit f89204d6b9
.
I didn't intend to push this commit yet, pending discussion on PR
258360.
PR: 258360
This commit is contained in:
parent
348fc38fd5
commit
589daa05be
@ -107,6 +107,8 @@ monetary_load_locale_l(struct xlocale_monetary *loc, int *using_locale,
|
||||
&loc->buffer, "LC_MONETARY",
|
||||
LCMONETARY_SIZE_FULL, LCMONETARY_SIZE_MIN,
|
||||
(const char **)l);
|
||||
if (ret != _LDP_ERROR)
|
||||
*changed = 1;
|
||||
if (ret == _LDP_LOADED) {
|
||||
l->mon_grouping =
|
||||
__fix_locale_grouping_str(l->mon_grouping);
|
||||
@ -144,8 +146,6 @@ monetary_load_locale_l(struct xlocale_monetary *loc, int *using_locale,
|
||||
M_ASSIGN_ICHAR(p_sign_posn);
|
||||
M_ASSIGN_ICHAR(n_sign_posn);
|
||||
}
|
||||
if (ret != _LDP_ERROR)
|
||||
atomic_store_rel_int(changed, 1);
|
||||
return (ret);
|
||||
}
|
||||
int
|
||||
|
@ -73,6 +73,8 @@ numeric_load_locale(struct xlocale_numeric *loc, int *using_locale, int *changed
|
||||
&loc->buffer, "LC_NUMERIC",
|
||||
LCNUMERIC_SIZE, LCNUMERIC_SIZE,
|
||||
(const char**)l);
|
||||
if (ret != _LDP_ERROR)
|
||||
*changed= 1;
|
||||
if (ret == _LDP_LOADED) {
|
||||
/* Can't be empty according to C99 */
|
||||
if (*l->decimal_point == '\0')
|
||||
@ -81,8 +83,6 @@ numeric_load_locale(struct xlocale_numeric *loc, int *using_locale, int *changed
|
||||
l->grouping =
|
||||
__fix_locale_grouping_str(l->grouping);
|
||||
}
|
||||
if (ret != _LDP_ERROR)
|
||||
atomic_store_rel_int(changed, 1);
|
||||
return (ret);
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ localeconv_l(locale_t loc)
|
||||
FIX_LOCALE(loc);
|
||||
struct lconv *ret = &loc->lconv;
|
||||
|
||||
if (atomic_load_acq_int(&loc->monetary_locale_changed) != 0) {
|
||||
if (loc->monetary_locale_changed) {
|
||||
/* LC_MONETARY part */
|
||||
struct lc_monetary_T * mptr;
|
||||
|
||||
@ -94,10 +94,10 @@ localeconv_l(locale_t loc)
|
||||
M_ASSIGN_CHAR(int_n_sep_by_space);
|
||||
M_ASSIGN_CHAR(int_p_sign_posn);
|
||||
M_ASSIGN_CHAR(int_n_sign_posn);
|
||||
atomic_store_int(&loc->monetary_locale_changed, 0);
|
||||
loc->monetary_locale_changed = 0;
|
||||
}
|
||||
|
||||
if (atomic_load_acq_int(&loc->numeric_locale_changed) != 0) {
|
||||
if (loc->numeric_locale_changed) {
|
||||
/* LC_NUMERIC part */
|
||||
struct lc_numeric_T * nptr;
|
||||
|
||||
@ -107,7 +107,7 @@ localeconv_l(locale_t loc)
|
||||
N_ASSIGN_STR(decimal_point);
|
||||
N_ASSIGN_STR(thousands_sep);
|
||||
N_ASSIGN_STR(grouping);
|
||||
atomic_store_int(&loc->numeric_locale_changed, 0);
|
||||
loc->numeric_locale_changed = 0;
|
||||
}
|
||||
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user