diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | locale/loadlocale.c | 5 | ||||
-rw-r--r-- | wctype/wctrans.c | 2 |
3 files changed, 10 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog index d2c0dea9e8..48a033e52e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,12 @@ 1999-11-20 Ulrich Drepper <drepper@cygnus.com> + * wctype/wctrans.c (wctrans): Use correct base index to access + extra mapping tables. + + * locale/loadlocale.c (_nl_load_locale): Use actual number of + entries from file and not the fixed (minimal number from the + langinfo.h list. + * locale/programs/ld-ctype.c (ctype_read): Fix reading of <U....> values in charmaps. diff --git a/locale/loadlocale.c b/locale/loadlocale.c index d829309f9f..7b94a42d0a 100644 --- a/locale/loadlocale.c +++ b/locale/loadlocale.c @@ -176,8 +176,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category) } newdata = malloc (sizeof *newdata - + (_nl_category_num_items[category] - * sizeof (union locale_data_value))); + + filedata->nstrings * sizeof (union locale_data_value)); if (! newdata) goto puntmap; @@ -186,7 +185,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category) newdata->filesize = st.st_size; newdata->mmaped = mmaped; newdata->usage_count = 0; - newdata->nstrings = _nl_category_num_items[category]; + newdata->nstrings = filedata->nstrings; for (cnt = 0; cnt < newdata->nstrings; ++cnt) { off_t idx = filedata->strindex[cnt]; diff --git a/wctype/wctrans.c b/wctype/wctrans.c index 3c46131f24..a5b4a32aac 100644 --- a/wctype/wctrans.c +++ b/wctype/wctrans.c @@ -50,7 +50,7 @@ wctrans (const char *property) return (wctrans_t) __ctype_tolower; /* We have to search the table. */ - result = (int32_t *) _NL_CURRENT (LC_CTYPE, _NL_CTYPE_WIDTH + cnt - 2); + result = (int32_t *) _NL_CURRENT (LC_CTYPE, _NL_NUM_LC_CTYPE + cnt - 2); return (wctrans_t) (result + 128); } |