about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog11
-rw-r--r--locale/duplocale.c4
-rw-r--r--locale/uselocale.c11
3 files changed, 17 insertions, 9 deletions
diff --git a/ChangeLog b/ChangeLog
index f9887ef8d9..59306d7972 100644
--- 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
diff --git a/locale/duplocale.c b/locale/duplocale.c
index 0e1e673598..867232e5a9 100644
--- a/locale/duplocale.c
+++ b/locale/duplocale.c
@@ -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;
diff --git a/locale/uselocale.c b/locale/uselocale.c
index d5e53113c1..d19ae50d0b 100644
--- a/locale/uselocale.c
+++ b/locale/uselocale.c
@@ -28,12 +28,9 @@
 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)