mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-03 08:11:08 +00:00
Update.
2004-07-16 Jakub Jelinek <jakub@redhat.com> * locale/newlocale.c: Include bits/libc-lock.h. (__libc_setlocale_lock): Extern decl. (__newlocale): Use it. Reported by Ulrich Weigand <Ulrich.Weigand@de.ibm.com>.
This commit is contained in:
parent
06eee9f5f6
commit
531b71dd4d
@ -1,3 +1,10 @@
|
|||||||
|
2004-07-16 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* locale/newlocale.c: Include bits/libc-lock.h.
|
||||||
|
(__libc_setlocale_lock): Extern decl.
|
||||||
|
(__newlocale): Use it.
|
||||||
|
Reported by Ulrich Weigand <Ulrich.Weigand@de.ibm.com>.
|
||||||
|
|
||||||
2004-07-15 Jakub Jelinek <jakub@redhat.com>
|
2004-07-15 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
* sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Remove
|
* sysdeps/unix/sysv/linux/fcntl.c (__fcntl_nocancel): Remove
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* Return a reference to locale information record.
|
/* Return a reference to locale information record.
|
||||||
Copyright (C) 1996,1997,1999,2000,2001,2002 Free Software Foundation, Inc.
|
Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2004
|
||||||
|
Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
|
||||||
|
|
||||||
@ -19,6 +20,7 @@
|
|||||||
02111-1307 USA. */
|
02111-1307 USA. */
|
||||||
|
|
||||||
#include <argz.h>
|
#include <argz.h>
|
||||||
|
#include <bits/libc-lock.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <locale.h>
|
#include <locale.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -27,6 +29,10 @@
|
|||||||
#include "localeinfo.h"
|
#include "localeinfo.h"
|
||||||
|
|
||||||
|
|
||||||
|
/* Lock for protecting global data. */
|
||||||
|
__libc_lock_define (extern , __libc_setlocale_lock attribute_hidden)
|
||||||
|
|
||||||
|
|
||||||
/* Use this when we come along an error. */
|
/* Use this when we come along an error. */
|
||||||
#define ERROR_RETURN \
|
#define ERROR_RETURN \
|
||||||
do { \
|
do { \
|
||||||
@ -154,6 +160,9 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
|||||||
ERROR_RETURN;
|
ERROR_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Protect global data. */
|
||||||
|
__libc_lock_lock (__libc_setlocale_lock);
|
||||||
|
|
||||||
/* Now process all categories we are interested in. */
|
/* Now process all categories we are interested in. */
|
||||||
names_len = 0;
|
names_len = 0;
|
||||||
for (cnt = 0; cnt < __LC_LAST; ++cnt)
|
for (cnt = 0; cnt < __LC_LAST; ++cnt)
|
||||||
@ -171,6 +180,9 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
|||||||
&& result.__locales[cnt]->usage_count != UNDELETABLE)
|
&& result.__locales[cnt]->usage_count != UNDELETABLE)
|
||||||
/* We can remove the data. */
|
/* We can remove the data. */
|
||||||
_nl_remove_locale (cnt, result.__locales[cnt]);
|
_nl_remove_locale (cnt, result.__locales[cnt]);
|
||||||
|
|
||||||
|
/* Critical section left. */
|
||||||
|
__libc_lock_unlock (__libc_setlocale_lock);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,6 +261,9 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
|||||||
free (base);
|
free (base);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Critical section left. */
|
||||||
|
__libc_lock_unlock (__libc_setlocale_lock);
|
||||||
|
|
||||||
/* Update the special members. */
|
/* Update the special members. */
|
||||||
update:
|
update:
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user