* locale/duplocale.c (__duplocale): Free names from the right array.
authorRoland McGrath <roland@gnu.org>
Sat, 31 Aug 2002 18:29:52 +0000 (18:29 +0000)
committerRoland McGrath <roland@gnu.org>
Sat, 31 Aug 2002 18:29:52 +0000 (18:29 +0000)
* locale/uselocale.c (__uselocale): Return previous locale when
setting a new one.

* locale/newlocale.c: Commit changes from 2002-08-30
batch where I failed to commit this file:
(__newlocale): Fill in __names array.

ChangeLog
locale/duplocale.c
locale/uselocale.c

index f9887ef..59306d7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2002-08-31  Roland McGrath  <roland@redhat.com>
+
+       * locale/duplocale.c (__duplocale): Free names from the right array.
+
+       * locale/uselocale.c (__uselocale): Return previous locale when
+       setting a new one.
+
+       * locale/newlocale.c: Commit changes from 2002-08-30
+       batch where I failed to commit this file:
+       (__newlocale): Fill in __names array.
+
 2002-08-31  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/gnu/Makefile: Only depend on Versions.v.i for
index 0e1e673..867232e 100644 (file)
@@ -56,8 +56,8 @@ __duplocale (__locale_t dataset)
              if (result->__names[cnt] == NULL)
                {
                  while (cnt-- > 0)
-                   if (dataset->__names[cnt] != _nl_C_name)
-                     free ((char *) dataset->__names[cnt]);
+                   if (result->__names[cnt] != _nl_C_name)
+                     free ((char *) result->__names[cnt]);
                  free (result);
                  result = NULL;
                  break;
index d5e5311..d19ae50 100644 (file)
 locale_t
 __uselocale (locale_t newloc)
 {
-  if (newloc == NULL)
-    {
-      locale_t loc = __libc_tsd_get (LOCALE);
-      return loc == &_nl_global_locale ? LC_GLOBAL_LOCALE : loc;
-    }
-  else
+  locale_t oldloc = __libc_tsd_get (LOCALE);
+
+  if (newloc != NULL)
     {
       const locale_t locobj
        = newloc == LC_GLOBAL_LOCALE ? &_nl_global_locale : newloc;
@@ -65,6 +62,6 @@ __uselocale (locale_t newloc)
 #endif
     }
 
-  return newloc;
+  return oldloc == &_nl_global_locale ? LC_GLOBAL_LOCALE : oldloc;
 }
 weak_alias (__uselocale, uselocale)