Handle multibyte decimapl point in strtold.

* libc/stdlib/strtodg.c: Define USE_LOCALE.
	(_strtodg_r): Handle multibyte decimal point.

Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
This commit is contained in:
Corinna Vinschen 2015-11-21 16:40:21 +01:00
parent 63613c3cb0
commit 666a3482a5
2 changed files with 13 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2015-11-21 Corinna Vinschen <corinna@vinschen.de>
* libc/stdlib/strtodg.c: Define USE_LOCALE.
(_strtodg_r): Handle multibyte decimal point.
2015-11-20 Corinna Vinschen <corinna@vinschen.de>
* libc/stdlib/Makefile.am (GENERAL_SOURCES): Add strtodg.c and

View File

@ -39,6 +39,8 @@ THIS SOFTWARE.
#include "locale.h"
#define USE_LOCALE
static const int
fivesbits[] = { 0, 3, 5, 7, 10, 12, 14, 17, 19, 21,
24, 26, 28, 31, 33, 35, 38, 40, 42, 45,
@ -516,13 +518,18 @@ _strtodg_r
z = 10*z + c - '0';
nd0 = nd;
#ifdef USE_LOCALE
if (c == *localeconv()->decimal_point)
if (strncmp (s, _localeconv_r (p)->decimal_point,
strlen (_localeconv_r (p)->decimal_point)) == 0)
#else
if (c == '.')
#endif
{
decpt = 1;
#ifdef USE_LOCALE
c = *(s += strlen (_localeconv_r (p)->decimal_point));
#else
c = *++s;
#endif
if (!nd) {
for(; c == '0'; c = *++s)
nz++;