Reference __global_locale only via __get_global_locale.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
parent
113abc27a6
commit
2fb5e3dfb2
|
@ -195,8 +195,6 @@ struct __locale_t
|
|||
};
|
||||
|
||||
extern const struct __locale_t __C_locale;
|
||||
extern struct __locale_t __global_locale;
|
||||
|
||||
extern char *__loadlocale (struct __locale_t *, int, const char *);
|
||||
extern const char *__get_locale_env(struct _reent *, int);
|
||||
|
||||
|
@ -210,6 +208,7 @@ extern size_t _wcsnrtombs_l (struct _reent *, char *, const wchar_t **,
|
|||
_ELIDABLE_INLINE struct __locale_t *
|
||||
__get_global_locale ()
|
||||
{
|
||||
extern struct __locale_t __global_locale;
|
||||
return &__global_locale;
|
||||
}
|
||||
|
||||
|
@ -227,7 +226,8 @@ __get_locale_r (struct _reent *r)
|
|||
_ELIDABLE_INLINE struct __locale_t *
|
||||
__get_current_locale ()
|
||||
{
|
||||
return _REENT->_locale ?: &__global_locale;
|
||||
return _REENT->_locale ?: __get_global_locale ();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef __CYGWIN__
|
||||
|
|
|
@ -1524,11 +1524,11 @@ internal_setlocale ()
|
|||
wchar_t *w_path = NULL, *w_cwd;
|
||||
|
||||
/* Don't do anything if the charset hasn't actually changed. */
|
||||
if (cygheap->locale.mbtowc == __global_locale.mbtowc)
|
||||
if (cygheap->locale.mbtowc == __get_global_locale ()->mbtowc)
|
||||
return;
|
||||
|
||||
debug_printf ("Global charset set to %s",
|
||||
__locale_charset (&__global_locale));
|
||||
__locale_charset (__get_global_locale ()));
|
||||
/* Fetch PATH and CWD and convert to wchar_t in previous charset. */
|
||||
path = getenv ("PATH");
|
||||
if (path && *path) /* $PATH can be potentially unset. */
|
||||
|
@ -1541,7 +1541,7 @@ internal_setlocale ()
|
|||
sys_cp_mbstowcs (cygheap->locale.mbtowc, w_cwd, 32768,
|
||||
cygheap->cwd.get_posix ());
|
||||
/* Set charset for internal conversion functions. */
|
||||
cygheap->locale.mbtowc = __global_locale.mbtowc;
|
||||
cygheap->locale.mbtowc = __get_global_locale ()->mbtowc;
|
||||
if (cygheap->locale.mbtowc == __ascii_mbtowc)
|
||||
cygheap->locale.mbtowc = __utf8_mbtowc;
|
||||
/* Restore CWD and PATH in new charset. */
|
||||
|
|
Loading…
Reference in New Issue