| Index: fpdfsdk/src/javascript/PublicMethods.cpp
|
| diff --git a/fpdfsdk/src/javascript/PublicMethods.cpp b/fpdfsdk/src/javascript/PublicMethods.cpp
|
| index c2e15fb11634755c22216d924d43ca3e78f68b37..6db31de1e7097568d69b9df129e4f2a9ab875263 100644
|
| --- a/fpdfsdk/src/javascript/PublicMethods.cpp
|
| +++ b/fpdfsdk/src/javascript/PublicMethods.cpp
|
| @@ -103,7 +103,7 @@ FX_BOOL CJS_PublicMethods::IsNumber(const FX_WCHAR* string) {
|
| } else {
|
| return FALSE;
|
| }
|
| - } else if (!IsDigit(c)) {
|
| + } else if (!FXSYS_iswdigit(c)) {
|
| return FALSE;
|
| }
|
| p++;
|
| @@ -112,30 +112,14 @@ FX_BOOL CJS_PublicMethods::IsNumber(const FX_WCHAR* string) {
|
| return TRUE;
|
| }
|
|
|
| -FX_BOOL CJS_PublicMethods::IsDigit(wchar_t ch) {
|
| - return (ch >= L'0' && ch <= L'9');
|
| -}
|
| -
|
| -FX_BOOL CJS_PublicMethods::IsDigit(char ch) {
|
| - return std::isdigit(ch);
|
| -}
|
| -
|
| -FX_BOOL CJS_PublicMethods::IsAlphabetic(wchar_t ch) {
|
| - return ((ch >= L'a' && ch <= L'z') || (ch >= L'A' && ch <= L'Z'));
|
| -}
|
| -
|
| -FX_BOOL CJS_PublicMethods::IsAlphaNumeric(wchar_t ch) {
|
| - return (IsDigit(ch) || IsAlphabetic(ch));
|
| -}
|
| -
|
| FX_BOOL CJS_PublicMethods::maskSatisfied(wchar_t c_Change, wchar_t c_Mask) {
|
| switch (c_Mask) {
|
| case L'9':
|
| - return IsDigit(c_Change);
|
| + return FXSYS_iswdigit(c_Change);
|
| case L'A':
|
| - return IsAlphabetic(c_Change);
|
| + return FXSYS_iswalpha(c_Change);
|
| case L'O':
|
| - return IsAlphaNumeric(c_Change);
|
| + return FXSYS_iswalnum(c_Change);
|
| case L'X':
|
| return TRUE;
|
| default:
|
| @@ -254,7 +238,7 @@ double CJS_PublicMethods::ParseNumber(const FX_WCHAR* swSource,
|
| while (p <= pEnd) {
|
| c = *p;
|
|
|
| - if (IsDigit(c)) {
|
| + if (FXSYS_iswdigit(c)) {
|
| swDigits += c;
|
| bDigitExist = TRUE;
|
| } else {
|
| @@ -396,12 +380,12 @@ int CJS_PublicMethods::ParseStringInteger(const CFX_WideString& string,
|
| break;
|
|
|
| FX_WCHAR c = string.GetAt(i);
|
| - if (IsDigit((wchar_t)c)) {
|
| - nRet = nRet * 10 + FXSYS_toDecimalDigitWide(c);
|
| - nSkip = i - nStart + 1;
|
| - if (nSkip >= nMaxStep)
|
| - break;
|
| - } else
|
| + if (!FXSYS_iswdigit(c))
|
| + break;
|
| +
|
| + nRet = nRet * 10 + FXSYS_toDecimalDigitWide(c);
|
| + nSkip = i - nStart + 1;
|
| + if (nSkip >= nMaxStep)
|
| break;
|
| }
|
|
|
| @@ -416,18 +400,18 @@ CFX_WideString CJS_PublicMethods::ParseStringString(
|
| nSkip = 0;
|
| for (int i = nStart, sz = string.GetLength(); i < sz; i++) {
|
| FX_WCHAR c = string.GetAt(i);
|
| - if ((c >= L'a' && c <= L'z') || (c >= L'A' && c <= L'Z')) {
|
| - swRet += c;
|
| - nSkip = i - nStart + 1;
|
| - } else
|
| + if (!FXSYS_iswdigit(c))
|
| break;
|
| +
|
| + swRet += c;
|
| + nSkip = i - nStart + 1;
|
| }
|
|
|
| return swRet;
|
| }
|
|
|
| double CJS_PublicMethods::ParseNormalDate(const CFX_WideString& value,
|
| - FX_BOOL& bWrongFormat) {
|
| + bool* bWrongFormat) {
|
| double dt = JS_GetDateTime();
|
|
|
| int nYear = JS_GetYearFromTime(dt);
|
| @@ -448,7 +432,7 @@ double CJS_PublicMethods::ParseNormalDate(const CFX_WideString& value,
|
| break;
|
|
|
| FX_WCHAR c = value.GetAt(i);
|
| - if (IsDigit((wchar_t)c)) {
|
| + if (FXSYS_iswdigit(c)) {
|
| number[nIndex++] = ParseStringInteger(value, i, nSkip, 4);
|
| i += nSkip;
|
| } else {
|
| @@ -469,7 +453,8 @@ double CJS_PublicMethods::ParseNormalDate(const CFX_WideString& value,
|
| nMonth = number[1];
|
| }
|
|
|
| - bWrongFormat = FALSE;
|
| + if (bWrongFormat)
|
| + *bWrongFormat = false;
|
| } else if (nIndex == 3) {
|
| // case1: year/month/day
|
| // case2: month/day/year
|
| @@ -492,9 +477,11 @@ double CJS_PublicMethods::ParseNormalDate(const CFX_WideString& value,
|
| nYear = number[2];
|
| }
|
|
|
| - bWrongFormat = FALSE;
|
| + if (bWrongFormat)
|
| + *bWrongFormat = false;
|
| } else {
|
| - bWrongFormat = TRUE;
|
| + if (bWrongFormat)
|
| + *bWrongFormat = true;
|
| return dt;
|
| }
|
|
|
| @@ -505,7 +492,7 @@ double CJS_PublicMethods::ParseNormalDate(const CFX_WideString& value,
|
|
|
| double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
|
| const CFX_WideString& format,
|
| - FX_BOOL& bWrongFormat) {
|
| + bool* bWrongFormat) {
|
| double dt = JS_GetDateTime();
|
|
|
| if (format.IsEmpty() || value.IsEmpty())
|
| @@ -522,7 +509,7 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
|
|
|
| FX_BOOL bPm = FALSE;
|
| FX_BOOL bExit = FALSE;
|
| - bWrongFormat = FALSE;
|
| + bool bBadFormat = false;
|
|
|
| int i = 0;
|
| int j = 0;
|
| @@ -707,7 +694,7 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
|
| }
|
| } else {
|
| if (j >= value.GetLength() || format.GetAt(i) != value.GetAt(j)) {
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
| bExit = TRUE;
|
| }
|
| i++;
|
| @@ -715,7 +702,7 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
|
| }
|
|
|
| if (oldj == j) {
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
| bExit = TRUE;
|
| }
|
| }
|
| @@ -725,7 +712,7 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
|
| if (value.GetLength() <= j) {
|
| bExit = TRUE;
|
| } else if (format.GetAt(i) != value.GetAt(j)) {
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
| bExit = TRUE;
|
| }
|
|
|
| @@ -742,24 +729,24 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
|
| nYear += 2000;
|
|
|
| if (nMonth < 1 || nMonth > 12)
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
|
|
| if (nDay < 1 || nDay > 31)
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
|
|
| if (nHour < 0 || nHour > 24)
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
|
|
| if (nMin < 0 || nMin > 60)
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
|
|
| if (nSec < 0 || nSec > 60)
|
| - bWrongFormat = TRUE;
|
| + bBadFormat = true;
|
|
|
| double dRet = 0;
|
|
|
| - if (bWrongFormat) {
|
| - dRet = ParseNormalDate(value, bWrongFormat);
|
| + if (bBadFormat) {
|
| + dRet = ParseNormalDate(value, &bBadFormat);
|
| } else {
|
| dRet = JS_MakeDate(JS_MakeDay(nYear, nMonth - 1, nDay),
|
| JS_MakeTime(nHour, nMin, nSec, 0));
|
| @@ -770,9 +757,11 @@ double CJS_PublicMethods::MakeRegularDate(const CFX_WideString& value,
|
| }
|
|
|
| if (JS_PortIsNan(dRet)) {
|
| - dRet = ParseNormalDate(value, bWrongFormat);
|
| + dRet = ParseNormalDate(value, &bBadFormat);
|
| }
|
|
|
| + if (bWrongFormat)
|
| + *bWrongFormat = bBadFormat;
|
| return dRet;
|
| }
|
|
|
| @@ -1175,8 +1164,8 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(
|
| bRc = FALSE;
|
| return TRUE;
|
| }
|
| - if (it != w_strChange2.begin()) // sign's position is not correct
|
| - {
|
| + // sign's position is not correct
|
| + if (it != w_strChange2.begin()) {
|
| FX_BOOL& bRc = pEvent->Rc();
|
| bRc = FALSE;
|
| return TRUE;
|
| @@ -1190,7 +1179,7 @@ FX_BOOL CJS_PublicMethods::AFNumber_Keystroke(
|
| continue;
|
| }
|
|
|
| - if (!IsDigit(*it)) {
|
| + if (!FXSYS_iswdigit(*it)) {
|
| FX_BOOL& bRc = pEvent->Rc();
|
| bRc = FALSE;
|
| return TRUE;
|
| @@ -1242,7 +1231,7 @@ FX_BOOL CJS_PublicMethods::AFPercent_Format(
|
| double dValue = atof(strValue);
|
| dValue *= 100;
|
| if (iDec > 0)
|
| - dValue += DOUBLE_CORRECT; //УÕý
|
| + dValue += DOUBLE_CORRECT;
|
|
|
| int iDec2;
|
| int iNegative = 0;
|
| @@ -1330,7 +1319,6 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IJS_Context* cc,
|
| return TRUE;
|
|
|
| CFX_WideString sFormat = params[0].ToCFXWideString();
|
| - FX_BOOL bWrongFormat = FALSE;
|
| double dDate = 0.0f;
|
|
|
| if (strValue.Find(L"GMT") != -1) {
|
| @@ -1338,7 +1326,7 @@ FX_BOOL CJS_PublicMethods::AFDate_FormatEx(IJS_Context* cc,
|
| // such as "Tue Aug 11 14:24:16 GMT+08002009"
|
| dDate = MakeInterDate(strValue);
|
| } else {
|
| - dDate = MakeRegularDate(strValue, sFormat, bWrongFormat);
|
| + dDate = MakeRegularDate(strValue, sFormat, nullptr);
|
| }
|
|
|
| if (JS_PortIsNan(dDate)) {
|
| @@ -1445,8 +1433,8 @@ FX_BOOL CJS_PublicMethods::AFDate_KeystrokeEx(
|
| return TRUE;
|
|
|
| CFX_WideString sFormat = params[0].ToCFXWideString();
|
| - FX_BOOL bWrongFormat = FALSE;
|
| - double dRet = MakeRegularDate(strValue, sFormat, bWrongFormat);
|
| + bool bWrongFormat = FALSE;
|
| + double dRet = MakeRegularDate(strValue, sFormat, &bWrongFormat);
|
| if (bWrongFormat || JS_PortIsNan(dRet)) {
|
| CFX_WideString swMsg;
|
| swMsg.Format(JSGetStringFromID(pContext, IDS_STRING_JSPARSEDATE).c_str(),
|
| @@ -1841,8 +1829,7 @@ FX_BOOL CJS_PublicMethods::AFParseDateEx(IJS_Context* cc,
|
| CFX_WideString sValue = params[0].ToCFXWideString();
|
| CFX_WideString sFormat = params[1].ToCFXWideString();
|
|
|
| - FX_BOOL bWrongFormat = FALSE;
|
| - double dDate = MakeRegularDate(sValue, sFormat, bWrongFormat);
|
| + double dDate = MakeRegularDate(sValue, sFormat, nullptr);
|
|
|
| if (JS_PortIsNan(dDate)) {
|
| CFX_WideString swMsg;
|
| @@ -1944,20 +1931,17 @@ FX_BOOL CJS_PublicMethods::AFSimple_Calculate(
|
| dTemp +=
|
| ParseStringToNumber(pFormCtrl->GetExportValue().c_str());
|
| break;
|
| - } else
|
| - continue;
|
| + }
|
| }
|
| }
|
| break;
|
| }
|
| case FIELDTYPE_LISTBOX: {
|
| - dTemp = 0.0;
|
| if (pFormField->CountSelectedItems() > 1)
|
| break;
|
| - else {
|
| - dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
|
| - break;
|
| - }
|
| +
|
| + dTemp = ParseStringToNumber(pFormField->GetValue().c_str());
|
| + break;
|
| }
|
| default:
|
| break;
|
| @@ -2057,7 +2041,7 @@ FX_BOOL CJS_PublicMethods::AFExtractNums(IJS_Context* cc,
|
| int nIndex = 0;
|
| for (int i = 0, sz = str.GetLength(); i < sz; i++) {
|
| FX_WCHAR wc = str.GetAt(i);
|
| - if (IsDigit((wchar_t)wc)) {
|
| + if (FXSYS_iswdigit(wc)) {
|
| sPart += wc;
|
| } else {
|
| if (sPart.GetLength() > 0) {
|
|
|