| Index: core/src/fxcrt/fx_basic_wstring.cpp
|
| diff --git a/core/src/fxcrt/fx_basic_wstring.cpp b/core/src/fxcrt/fx_basic_wstring.cpp
|
| index 131672da2b280938d339d81384c3ccca68cf8bd6..220ffbd57dad029884997333412f4085a04bf959 100644
|
| --- a/core/src/fxcrt/fx_basic_wstring.cpp
|
| +++ b/core/src/fxcrt/fx_basic_wstring.cpp
|
| @@ -5,8 +5,10 @@
|
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
| #include <stddef.h> // For offsetof().
|
| +#include <cctype>
|
|
|
| #include "core/include/fxcrt/fx_basic.h"
|
| +#include "core/include/fxcrt/fx_ext.h"
|
| #include "third_party/base/numerics/safe_math.h"
|
|
|
| // static
|
| @@ -765,8 +767,8 @@ void CFX_WideString::FormatV(const FX_WCHAR* lpszFormat, va_list argList) {
|
| }
|
| if (nWidth == 0) {
|
| nWidth = FXSYS_wtoi(lpsz);
|
| - for (; *lpsz != 0 && (*lpsz) <= '9' && (*lpsz) >= '0'; lpsz++)
|
| - ;
|
| + while (std::iswdigit(*lpsz))
|
| + ++lpsz;
|
| }
|
| if (nWidth < 0 || nWidth > 128 * 1024) {
|
| lpszFormat = L"Bad width";
|
| @@ -781,8 +783,8 @@ void CFX_WideString::FormatV(const FX_WCHAR* lpszFormat, va_list argList) {
|
| lpsz++;
|
| } else {
|
| nPrecision = FXSYS_wtoi(lpsz);
|
| - for (; *lpsz != 0 && (*lpsz) >= '0' && (*lpsz) <= '9'; lpsz++)
|
| - ;
|
| + while (std::iswdigit(*lpsz))
|
| + ++lpsz;
|
| }
|
| }
|
| if (nPrecision < 0 || nPrecision > 128 * 1024) {
|
| @@ -968,7 +970,7 @@ FX_FLOAT FX_wtof(const FX_WCHAR* str, int len) {
|
| if (str[cc] == '.') {
|
| break;
|
| }
|
| - integer = integer * 10 + str[cc] - '0';
|
| + integer = integer * 10 + FXSYS_toDecimalDigitWide(str[cc]);
|
| cc++;
|
| }
|
| FX_FLOAT fraction = 0;
|
| @@ -976,7 +978,7 @@ FX_FLOAT FX_wtof(const FX_WCHAR* str, int len) {
|
| cc++;
|
| FX_FLOAT scale = 0.1f;
|
| while (cc < len) {
|
| - fraction += scale * (str[cc] - '0');
|
| + fraction += scale * FXSYS_toDecimalDigitWide(str[cc]);
|
| scale *= 0.1f;
|
| cc++;
|
| }
|
|
|