From eb9194f52c2008366326319582c7329550d4708e Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 25 Aug 2009 18:47:24 +0000 Subject: [PATCH] 2009-08-25 Andy Koppe * libc/stdlib/sb_charsets.c (__micro_atoi): Allow five-digit codepage numbers. * libc/locale/locale.c (loadlocale): Set MB_CUR_MAX to 1 for KOI8 charsets. * libc/stdlib/local.h (__cp_conv): Remove incorrect number of codepages. --- newlib/ChangeLog | 8 ++++++++ newlib/libc/locale/locale.c | 1 + newlib/libc/stdlib/local.h | 2 +- newlib/libc/stdlib/sb_charsets.c | 2 +- 4 files changed, 11 insertions(+), 2 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 779c9b96f..3405b828b 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,11 @@ +2009-08-25 Andy Koppe + + * libc/stdlib/sb_charsets.c (__micro_atoi): Allow five-digit codepage + numbers. + * libc/locale/locale.c (loadlocale): Set MB_CUR_MAX to 1 for KOI8 + charsets. + * libc/stdlib/local.h (__cp_conv): Remove incorrect number of codepages. + 2009-08-24 Corinna Vinschen * libc/locale/locale.c: Update documentation. diff --git a/newlib/libc/locale/locale.c b/newlib/libc/locale/locale.c index 19159fbca..a01b312f8 100644 --- a/newlib/libc/locale/locale.c +++ b/newlib/libc/locale/locale.c @@ -624,6 +624,7 @@ loadlocale(struct _reent *p, int category) strcpy (charset, "CP21866"); else return NULL; + mbc_max = 1; #ifdef _MB_CAPABLE #ifdef _MB_EXTENDED_CHARSETS_WINDOWS l_wctomb = __cp_wctomb; diff --git a/newlib/libc/stdlib/local.h b/newlib/libc/stdlib/local.h index 93a3b4b8e..12e6998c1 100644 --- a/newlib/libc/stdlib/local.h +++ b/newlib/libc/stdlib/local.h @@ -60,7 +60,7 @@ int __big5_mbtowc (struct _reent *, wchar_t *, const char *, size_t, extern wchar_t __iso_8859_conv[14][0x60]; int __iso_8859_index (const char *); -extern wchar_t __cp_conv[12][0x80]; +extern wchar_t __cp_conv[][0x80]; int __cp_index (const char *); #endif diff --git a/newlib/libc/stdlib/sb_charsets.c b/newlib/libc/stdlib/sb_charsets.c index 03c92064c..dce4855d7 100644 --- a/newlib/libc/stdlib/sb_charsets.c +++ b/newlib/libc/stdlib/sb_charsets.c @@ -625,7 +625,7 @@ __micro_atoi (const char *s) return -1; while (*s) { - if (*s < '0' || *s > '9' || ret >= 10000) + if (*s < '0' || *s > '9' || ret >= 100000) return -1; ret = 10 * ret + (*s++ - '0'); }