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 const struct __locale_t __C_locale;
|
||||||
extern struct __locale_t __global_locale;
|
|
||||||
|
|
||||||
extern char *__loadlocale (struct __locale_t *, int, const char *);
|
extern char *__loadlocale (struct __locale_t *, int, const char *);
|
||||||
extern const char *__get_locale_env(struct _reent *, int);
|
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 *
|
_ELIDABLE_INLINE struct __locale_t *
|
||||||
__get_global_locale ()
|
__get_global_locale ()
|
||||||
{
|
{
|
||||||
|
extern struct __locale_t __global_locale;
|
||||||
return &__global_locale;
|
return &__global_locale;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -227,7 +226,8 @@ __get_locale_r (struct _reent *r)
|
||||||
_ELIDABLE_INLINE struct __locale_t *
|
_ELIDABLE_INLINE struct __locale_t *
|
||||||
__get_current_locale ()
|
__get_current_locale ()
|
||||||
{
|
{
|
||||||
return _REENT->_locale ?: &__global_locale;
|
return _REENT->_locale ?: __get_global_locale ();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __CYGWIN__
|
#ifdef __CYGWIN__
|
||||||
|
|
|
@ -1524,11 +1524,11 @@ internal_setlocale ()
|
||||||
wchar_t *w_path = NULL, *w_cwd;
|
wchar_t *w_path = NULL, *w_cwd;
|
||||||
|
|
||||||
/* Don't do anything if the charset hasn't actually changed. */
|
/* 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;
|
return;
|
||||||
|
|
||||||
debug_printf ("Global charset set to %s",
|
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. */
|
/* Fetch PATH and CWD and convert to wchar_t in previous charset. */
|
||||||
path = getenv ("PATH");
|
path = getenv ("PATH");
|
||||||
if (path && *path) /* $PATH can be potentially unset. */
|
if (path && *path) /* $PATH can be potentially unset. */
|
||||||
|
@ -1541,7 +1541,7 @@ internal_setlocale ()
|
||||||
sys_cp_mbstowcs (cygheap->locale.mbtowc, w_cwd, 32768,
|
sys_cp_mbstowcs (cygheap->locale.mbtowc, w_cwd, 32768,
|
||||||
cygheap->cwd.get_posix ());
|
cygheap->cwd.get_posix ());
|
||||||
/* Set charset for internal conversion functions. */
|
/* 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)
|
if (cygheap->locale.mbtowc == __ascii_mbtowc)
|
||||||
cygheap->locale.mbtowc = __utf8_mbtowc;
|
cygheap->locale.mbtowc = __utf8_mbtowc;
|
||||||
/* Restore CWD and PATH in new charset. */
|
/* Restore CWD and PATH in new charset. */
|
||||||
|
|
Loading…
Reference in New Issue