mirror of git://sourceware.org/git/glibc.git
* inet/getnetgrent_r.c (endnetgrent, __getnetgrent_r): Actually call
the static symbols added in the last change (doofus is me). * locale/newlocale.c (__newlocale): Use a bit mask instead of a second loop to notice missing categories in a composite name. * locale/locale.h (LC_CTYPE_MASK, LC_NUMERIC_MASK, LC_TIME_MASK, LC_COLLATE_MASK, LC_MONETARY_MASK, LC_MESSAGES_MASK, LC_ALL_MASK, LC_PAPER_MASK, LC_NAME_MASK, LC_ADDRESS_MASK, LC_TELEPHONE_MASK, LC_MEASUREMENT_MASK, LC_IDENTIFICATION_MASK, LC_ALL_MASK): New macros. * malloc/tst-calloc.c: Add tests for one or both parameters being zero.
This commit is contained in:
parent
2a54ad77a1
commit
78323b5b80
16
ChangeLog
16
ChangeLog
|
@ -1,7 +1,19 @@
|
||||||
|
2002-08-07 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
|
* inet/getnetgrent_r.c (endnetgrent, __getnetgrent_r): Actually call
|
||||||
|
the static symbols added in the last change (doofus is me).
|
||||||
|
|
||||||
|
* locale/newlocale.c (__newlocale): Use a bit mask instead of a second
|
||||||
|
loop to notice missing categories in a composite name.
|
||||||
|
|
||||||
|
* locale/locale.h (LC_CTYPE_MASK, LC_NUMERIC_MASK, LC_TIME_MASK,
|
||||||
|
LC_COLLATE_MASK, LC_MONETARY_MASK, LC_MESSAGES_MASK, LC_ALL_MASK,
|
||||||
|
LC_PAPER_MASK, LC_NAME_MASK, LC_ADDRESS_MASK, LC_TELEPHONE_MASK,
|
||||||
|
LC_MEASUREMENT_MASK, LC_IDENTIFICATION_MASK, LC_ALL_MASK): New macros.
|
||||||
|
|
||||||
2002-08-07 Ulrich Drepper <drepper@redhat.com>
|
2002-08-07 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
* malloc/tst-calloc.c: Add tests for one or both parameters being
|
* malloc/tst-calloc.c: Add tests for one or both parameters being zero.
|
||||||
zero.
|
|
||||||
|
|
||||||
2002-08-07 Roland McGrath <roland@redhat.com>
|
2002-08-07 Roland McGrath <roland@redhat.com>
|
||||||
|
|
||||||
|
|
|
@ -144,15 +144,43 @@ typedef __locale_t locale_t;
|
||||||
|
|
||||||
/* Return a reference to a data structure representing a set of locale
|
/* Return a reference to a data structure representing a set of locale
|
||||||
datasets. Unlike for the CATEGORY parameter for `setlocale' the
|
datasets. Unlike for the CATEGORY parameter for `setlocale' the
|
||||||
CATEGORY_MASK parameter here uses a single bit for each category.
|
CATEGORY_MASK parameter here uses a single bit for each category,
|
||||||
I.e., 1 << LC_CTYPE means to load data for this category. If
|
made by OR'ing together LC_*_MASK bits above. */
|
||||||
BASE is non-null the appropriate category information in the BASE
|
|
||||||
record is replaced. */
|
|
||||||
extern __locale_t __newlocale (int __category_mask, __const char *__locale,
|
extern __locale_t __newlocale (int __category_mask, __const char *__locale,
|
||||||
__locale_t __base) __THROW;
|
__locale_t __base) __THROW;
|
||||||
extern __locale_t newlocale (int __category_mask, __const char *__locale,
|
extern __locale_t newlocale (int __category_mask, __const char *__locale,
|
||||||
__locale_t __base) __THROW;
|
__locale_t __base) __THROW;
|
||||||
|
|
||||||
|
/* These are the bits that can be set in the CATEGORY_MASK argument to
|
||||||
|
`newlocale'. In the GNU implementation, LC_FOO_MASK has the value
|
||||||
|
of (1 << LC_FOO), but this is not a part of the interface that
|
||||||
|
callers can assume will be true. */
|
||||||
|
# define LC_CTYPE_MASK (1 << __LC_CTYPE)
|
||||||
|
# define LC_NUMERIC_MASK (1 << __LC_NUMERIC)
|
||||||
|
# define LC_TIME_MASK (1 << __LC_TIME)
|
||||||
|
# define LC_COLLATE_MASK (1 << __LC_COLLATE)
|
||||||
|
# define LC_MONETARY_MASK (1 << __LC_MONETARY)
|
||||||
|
# define LC_MESSAGES_MASK (1 << __LC_MESSAGES)
|
||||||
|
# define LC_PAPER_MASK (1 << __LC_PAPER)
|
||||||
|
# define LC_NAME_MASK (1 << __LC_NAME)
|
||||||
|
# define LC_ADDRESS_MASK (1 << __LC_ADDRESS)
|
||||||
|
# define LC_TELEPHONE_MASK (1 << __LC_TELEPHONE)
|
||||||
|
# define LC_MEASUREMENT_MASK (1 << __LC_MEASUREMENT)
|
||||||
|
# define LC_IDENTIFICATION_MASK (1 << __LC_IDENTIFICATION)
|
||||||
|
# define LC_ALL_MASK (LC_CTYPE_MASK \
|
||||||
|
| LC_NUMERIC_MASK \
|
||||||
|
| LC_TIME_MASK \
|
||||||
|
| LC_COLLATE_MASK \
|
||||||
|
| LC_MONETARY_MASK \
|
||||||
|
| LC_MESSAGES_MASK \
|
||||||
|
| LC_PAPER_MASK \
|
||||||
|
| LC_NAME_MASK \
|
||||||
|
| LC_ADDRESS_MASK \
|
||||||
|
| LC_TELEPHONE_MASK \
|
||||||
|
| LC_MEASUREMENT_MASK \
|
||||||
|
| LC_IDENTIFICATION_MASK \
|
||||||
|
)
|
||||||
|
|
||||||
/* Return a duplicate of the set of locale in DATASET. All usage
|
/* Return a duplicate of the set of locale in DATASET. All usage
|
||||||
counters are increased if necessary. */
|
counters are increased if necessary. */
|
||||||
extern __locale_t __duplocale (__locale_t __dataset) __THROW;
|
extern __locale_t __duplocale (__locale_t __dataset) __THROW;
|
||||||
|
|
|
@ -104,6 +104,7 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
||||||
/* This is a composite name. Make a copy and split it up. */
|
/* This is a composite name. Make a copy and split it up. */
|
||||||
char *np = strdupa (locale);
|
char *np = strdupa (locale);
|
||||||
char *cp;
|
char *cp;
|
||||||
|
int specified_mask = 0;
|
||||||
|
|
||||||
while ((cp = strchr (np, '=')) != NULL)
|
while ((cp = strchr (np, '=')) != NULL)
|
||||||
{
|
{
|
||||||
|
@ -118,6 +119,7 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
||||||
ERROR_RETURN;
|
ERROR_RETURN;
|
||||||
|
|
||||||
/* Found the category this clause sets. */
|
/* Found the category this clause sets. */
|
||||||
|
specified_mask |= 1 << cnt;
|
||||||
newnames[cnt] = ++cp;
|
newnames[cnt] = ++cp;
|
||||||
cp = strchr (cp, ';');
|
cp = strchr (cp, ';');
|
||||||
if (cp != NULL)
|
if (cp != NULL)
|
||||||
|
@ -131,10 +133,8 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (cnt = 0; cnt < __LC_LAST; ++cnt)
|
if (category_mask &~ specified_mask)
|
||||||
if (cnt != LC_ALL
|
/* The composite name did not specify all categories we need. */
|
||||||
&& (category_mask & 1 << cnt) != 0 && newnames[cnt] == locale)
|
|
||||||
/* The composite name did not specify the category we need. */
|
|
||||||
ERROR_RETURN;
|
ERROR_RETURN;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue