aboutsummaryrefslogtreecommitdiff
path: root/locale
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-31 18:29:52 +0000
committerRoland McGrath <roland@gnu.org>2002-08-31 18:29:52 +0000
commit426bf3a396d0f7743decebe861b503398400233e (patch)
tree93c1780d1e425359f407efd06db85826f5314799 /locale
parent2002-08-31 Roland McGrath <roland@redhat.com> (diff)
downloadglibc-426bf3a396d0f7743decebe861b503398400233e.tar.gz
glibc-426bf3a396d0f7743decebe861b503398400233e.tar.bz2
glibc-426bf3a396d0f7743decebe861b503398400233e.zip
* 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.
Diffstat (limited to 'locale')
-rw-r--r--locale/duplocale.c4
-rw-r--r--locale/uselocale.c11
2 files changed, 6 insertions, 9 deletions
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)