monetary_members.cc (moneypunct<wchar_t, [...]): Use __uselocale instead of setlocale...
authorJakub Jelinek <jakub@redhat.com>
Thu, 5 Sep 2002 07:51:16 +0000 (09:51 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Thu, 5 Sep 2002 07:51:16 +0000 (09:51 +0200)
* config/locale/gnu/monetary_members.cc
(moneypunct<wchar_t, true>::_M_initialize_moneypunct,
moneypunct<wchar_t, false>::_M_initialize_moneypunct): Use
__uselocale instead of setlocale for glibc 2.3.

From-SVN: r56839

libstdc++-v3/ChangeLog
libstdc++-v3/config/locale/gnu/monetary_members.cc

index f3dd059d92933322a98843c07289c869fb9b90ec..06cf2a0ba7ab91202929eaff93b2a9c41046d250 100644 (file)
@@ -1,3 +1,10 @@
+2002-09-05  Jakub Jelinek  <jakub@redhat.com>
+
+       * config/locale/gnu/monetary_members.cc
+       (moneypunct<wchar_t, true>::_M_initialize_moneypunct,
+       moneypunct<wchar_t, false>::_M_initialize_moneypunct): Use
+       __uselocale instead of setlocale for glibc 2.3.
+
 2002-09-05  Jakub Jelinek  <jakub@redhat.com>
 
        * config/locale/generic/c++locale_internal.h: New header.
index bc915af0b15f774cd103f13a8743925c3d82f6c9..68b154bdc7ceb80f9fe656533e153217e82accbf 100644 (file)
@@ -335,9 +335,13 @@ namespace std
       else
        {
          // Named locale.
-         // XXX Fix me. Switch to named locale so that mbsrtowcs will work.
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+         __c_locale __old = __uselocale(__cloc);
+#else
+         // Switch to named locale so that mbsrtowcs will work.
          char* __old = strdup(setlocale(LC_ALL, NULL));
          setlocale(LC_ALL, __name);
+#endif
 
          _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
 
@@ -400,9 +404,12 @@ namespace std
          char __nspace = *(__nl_langinfo_l(__INT_N_SEP_BY_SPACE, __cloc));
          _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn);
 
-         // XXX
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+         __uselocale(__old);
+#else
          setlocale(LC_ALL, __old);
          free(__old);
+#endif
        }
     }
 
@@ -427,9 +434,13 @@ namespace std
       else
        {
          // Named locale.
-         // XXX Fix me. Switch to named locale so that mbsrtowcs will work.
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+         __c_locale __old = __uselocale(__cloc);
+#else
+         // Switch to named locale so that mbsrtowcs will work.
          char* __old = strdup(setlocale(LC_ALL, NULL));
          setlocale(LC_ALL, __name);
+#endif
 
          _M_decimal_point = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc)}).__w);
          _M_thousands_sep = static_cast<wchar_t>(((union { const char *__s; unsigned int __w; }){ __s: __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc)}).__w);
@@ -491,9 +502,12 @@ namespace std
          char __nspace = *(__nl_langinfo_l(__N_SEP_BY_SPACE, __cloc));
          _M_neg_format = _S_construct_pattern(__nprecedes, __nspace, __nposn);
 
-         // XXX
+#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
+         __uselocale(__old);
+#else
          setlocale(LC_ALL, __old);
          free(__old);
+#endif
        }
     }