diff options
Diffstat (limited to 'winsup/utils')
-rw-r--r-- | winsup/utils/ChangeLog | 20 | ||||
-rw-r--r-- | winsup/utils/locale.cc | 17 | ||||
-rw-r--r-- | winsup/utils/regtool.cc | 4 |
3 files changed, 31 insertions, 10 deletions
diff --git a/winsup/utils/ChangeLog b/winsup/utils/ChangeLog index 898756716..a354d5170 100644 --- a/winsup/utils/ChangeLog +++ b/winsup/utils/ChangeLog @@ -1,3 +1,23 @@ +2010-03-24 Corinna Vinschen <corinna@vinschen.de> + + * regtool.cc (find_key): Fix allocation size of "value". + +2010-03-23 Corinna Vinschen <corinna@vinschen.de> + + * locale.cc (add_locale_alias_locales): Always use loc_num at function + start to avoid confusing bsearch. + +2010-03-23 Corinna Vinschen <corinna@vinschen.de> + + * locale.cc: Revert accidental checkin of unfinished changes. + +2010-03-23 Corinna Vinschen <corinna@vinschen.de> + + * locale.cc (print_locale_with_codeset): Drop redundant name parameter. + Simplify creating locale string. Add "@" in case of a modifier. + (print_locale): Drop name parameter in calls to + print_locale_with_codeset. + 2010-02-25 Yaakov Selkowitz <yselkowitz@users.sourceforge.net> * utils.sgml (kill): Add SIGIO, SIGCLD, and SIGPWR. diff --git a/winsup/utils/locale.cc b/winsup/utils/locale.cc index aafd9f6b7..68acb8298 100644 --- a/winsup/utils/locale.cc +++ b/winsup/utils/locale.cc @@ -114,8 +114,8 @@ print_codeset (const char *codeset) } void -print_locale_with_codeset (int verbose, loc_t *locale, const char *name, - bool utf8, const char *modifier) +print_locale_with_codeset (int verbose, loc_t *locale, bool utf8, + const char *modifier) { static const char *sysroot; char locname[32]; @@ -132,7 +132,8 @@ print_locale_with_codeset (int verbose, loc_t *locale, const char *name, if (!sysroot) sysroot = "kernel32.dll"; } - stpcpy (stpcpy (stpcpy (locname, name), utf8 ? ".utf8" : ""), modifier ?: ""); + snprintf (locname, 32, "%s%s%s%s", locale->name, utf8 ? ".utf8" : "", + modifier ? "@" : "", modifier ?: ""); if (verbose) fputs ("locale: ", stdout); printf ("%-15s ", locname); @@ -151,17 +152,16 @@ print_locale_with_codeset (int verbose, loc_t *locale, const char *name, void print_locale (int verbose, loc_t *locale) { - print_locale_with_codeset (verbose, locale, locale->name, false, NULL); + print_locale_with_codeset (verbose, locale, false, NULL); char *modifier = strchr (locale->name, '@'); if (!locale->alias) { if (!modifier) - print_locale_with_codeset (verbose, locale, locale->name, true, NULL); + print_locale_with_codeset (verbose, locale, true, NULL); else if (!strcmp (modifier, "@cjknarrow")) { *modifier++ = '\0'; - print_locale_with_codeset (verbose, locale, locale->name, true, - modifier); + print_locale_with_codeset (verbose, locale, true, modifier); } } } @@ -209,6 +209,7 @@ add_locale_alias_locales () const char *alias, *replace; char orig_locale[32]; loc_t search, *loc; + size_t orig_loc_num = loc_num; FILE *fp = fopen (LOCALE_ALIAS, "rt"); if (!fp) @@ -237,7 +238,7 @@ add_locale_alias_locales () if (c) *c = '\0'; search.name = replace; - loc = (loc_t *) bsearch (&search, locale, loc_num, sizeof (loc_t), + loc = (loc_t *) bsearch (&search, locale, orig_loc_num, sizeof (loc_t), compare_locales); add_locale (alias, loc ? loc->language : L"", loc ? loc->territory : L"", true); diff --git a/winsup/utils/regtool.cc b/winsup/utils/regtool.cc index 487e779db..d8a492c37 100644 --- a/winsup/utils/regtool.cc +++ b/winsup/utils/regtool.cc @@ -377,7 +377,7 @@ find_key (int howmanyparts, REGSAM access, int option = 0) if (value) free (value); len = mbstowcs (NULL, n, 0) + 1; - value = (wchar_t *) malloc (len); + value = (wchar_t *) malloc (len * sizeof (wchar_t)); mbstowcs (value, n, len); return; } @@ -387,7 +387,7 @@ find_key (int howmanyparts, REGSAM access, int option = 0) if (value) free (value); len = mbstowcs (NULL, e + 1, 0) + 1; - value = (wchar_t *) malloc (len); + value = (wchar_t *) malloc (len * sizeof (wchar_t)); mbstowcs (value, e + 1, len); } } |