Avoid computing unused values in IsIsoTimeFormat().
Minimally-disruptive change. Now that the function arguments
have been reduced, tests and simplification to follow.
Change-Id: I42f8a856add5331ca219b9ccf3c755dfc3ed3ece
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/109033
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/fxjs/xfa/cfxjse_formcalc_context.cpp b/fxjs/xfa/cfxjse_formcalc_context.cpp
index f463e1f..c739522 100644
--- a/fxjs/xfa/cfxjse_formcalc_context.cpp
+++ b/fxjs/xfa/cfxjse_formcalc_context.cpp
@@ -578,27 +578,7 @@
return iDay <= (iMonth % 2 == 0 ? 31 : 30);
}
-bool IsIsoTimeFormat(pdfium::span<const char> pData,
- int32_t* pHour,
- int32_t* pMinute,
- int32_t* pSecond,
- int32_t* pMilliSecond,
- int32_t* pZoneHour,
- int32_t* pZoneMinute) {
- int32_t& iHour = *pHour;
- int32_t& iMinute = *pMinute;
- int32_t& iSecond = *pSecond;
- int32_t& iMilliSecond = *pMilliSecond;
- int32_t& iZoneHour = *pZoneHour;
- int32_t& iZoneMinute = *pZoneMinute;
-
- iHour = 0;
- iMinute = 0;
- iSecond = 0;
- iMilliSecond = 0;
- iZoneHour = 0;
- iZoneMinute = 0;
-
+bool IsIsoTimeFormat(pdfium::span<const char> pData) {
if (pData.empty())
return false;
@@ -627,25 +607,12 @@
return false;
}
if (iIndex + 2 < iZone && pData[iIndex + 2] == ':') {
- if (iPos == 0) {
- iHour = FXSYS_atoi(szBuffer);
+ if (iPos == 0 || iPos == 1) {
++iPos;
- } else if (iPos == 1) {
- iMinute = FXSYS_atoi(szBuffer);
- ++iPos;
- } else {
- iSecond = FXSYS_atoi(szBuffer);
}
iIndex += 3;
} else {
- if (iPos == 0) {
- iHour = FXSYS_atoi(szBuffer);
- ++iPos;
- } else if (iPos == 1) {
- iMinute = FXSYS_atoi(szBuffer);
- ++iPos;
- } else if (iPos == 2) {
- iSecond = FXSYS_atoi(szBuffer);
+ if (iPos == 0 || iPos == 1 || iPos == 2) {
++iPos;
}
iIndex += 2;
@@ -665,9 +632,7 @@
return false;
szMilliSeconds[j] = c;
}
- iMilliSecond = FXSYS_atoi(szMilliSeconds);
- if (iMilliSecond >= 1000) {
- iMilliSecond = 0;
+ if (FXSYS_atoi(szMilliSeconds) >= 1000) {
return false;
}
iIndex += kSubSecondLength;
@@ -676,12 +641,10 @@
if (iIndex < pData.size() && FXSYS_towlower(pData[iIndex]) == 'z')
return true;
- int32_t iSign = 1;
if (iIndex < pData.size()) {
if (pData[iIndex] == '+') {
++iIndex;
} else if (pData[iIndex] == '-') {
- iSign = -1;
++iIndex;
}
}
@@ -696,18 +659,9 @@
return false;
}
if (iIndex + 2 < pData.size() && pData[iIndex + 2] == ':') {
- if (iPos == 0) {
- iZoneHour = FXSYS_atoi(szBuffer);
- } else if (iPos == 1) {
- iZoneMinute = FXSYS_atoi(szBuffer);
- }
iIndex += 3;
} else {
- if (!iPos) {
- iZoneHour = FXSYS_atoi(szBuffer);
- ++iPos;
- } else if (iPos == 1) {
- iZoneMinute = FXSYS_atoi(szBuffer);
+ if (iPos == 0 || iPos == 1) {
++iPos;
}
iIndex += 2;
@@ -716,7 +670,6 @@
if (iIndex < pData.size())
return false;
- iZoneHour *= iSign;
return true;
}
@@ -737,18 +690,10 @@
if (iIndex == pData.size() || (iIndex != 8 && iIndex != 10))
return false;
- int32_t iHour = 0;
- int32_t iMinute = 0;
- int32_t iSecond = 0;
- int32_t iMilliSecond = 0;
- int32_t iZoneHour = 0;
- int32_t iZoneMinute = 0;
-
pdfium::span<const char> pDateSpan = pData.subspan(0, iIndex);
pdfium::span<const char> pTimeSpan = pData.subspan(iIndex + 1);
return IsIsoDateFormat(pDateSpan, pYear, pMonth, pDay) &&
- IsIsoTimeFormat(pTimeSpan, &iHour, &iMinute, &iSecond, &iMilliSecond,
- &iZoneHour, &iZoneMinute);
+ IsIsoTimeFormat(pTimeSpan);
}
int32_t DateString2Num(ByteStringView bsDate) {