summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Harrison <rharrison@chromium.org>2017-09-01 11:14:18 -0400
committerChromium commit bot <commit-bot@chromium.org>2017-09-01 15:26:31 +0000
commit57cb5447d68c01eddba0618c3a8fe450b180f917 (patch)
tree5f17dc4c02c331d81a005db179c4a2a9b51b7e46
parentffb6ccf6a2699cbb2bfc925c96609fae5124f51f (diff)
downloadpdfium-57cb5447d68c01eddba0618c3a8fe450b180f917.tar.xz
Adjust loops in preperation for FX_STRSIZE int->size_t
Adjust loop conditions and behaviours in preperation for convering the underlying type of FX_STRSIZE to size_t. These changes are not dependent on the type switch occuring, so can be landed before hand. BUG=pdfium:828 Change-Id: I5f950c99c10e5ef0836959e3b1dd2e09f8f5afc0 Reviewed-on: https://pdfium-review.googlesource.com/12750 Commit-Queue: Ryan Harrison <rharrison@chromium.org> Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
-rw-r--r--core/fpdfapi/font/cpdf_cmap.cpp46
-rw-r--r--core/fpdftext/cpdf_linkextract.cpp12
-rw-r--r--fpdfsdk/javascript/Document.cpp15
-rw-r--r--fxbarcode/oned/BC_OnedEAN8Writer.cpp16
-rw-r--r--fxbarcode/oned/BC_OnedUPCAWriter.cpp8
5 files changed, 44 insertions, 53 deletions
diff --git a/core/fpdfapi/font/cpdf_cmap.cpp b/core/fpdfapi/font/cpdf_cmap.cpp
index 7b88346d64..9e8c48bb27 100644
--- a/core/fpdfapi/font/cpdf_cmap.cpp
+++ b/core/fpdfapi/font/cpdf_cmap.cpp
@@ -184,48 +184,43 @@ const PredefinedCMap g_PredefinedCMaps[] = {
int CheckFourByteCodeRange(uint8_t* codes,
FX_STRSIZE size,
const std::vector<CPDF_CMap::CodeRange>& ranges) {
- int iSeg = pdfium::CollectionSize<int>(ranges) - 1;
- while (iSeg >= 0) {
- if (ranges[iSeg].m_CharSize < size) {
- --iSeg;
+ for (size_t i = ranges.size(); i > 0; i--) {
+ size_t seg = i - 1;
+ if (ranges[seg].m_CharSize < size)
continue;
- }
- int iChar = 0;
+ FX_STRSIZE iChar = 0;
while (iChar < size) {
- if (codes[iChar] < ranges[iSeg].m_Lower[iChar] ||
- codes[iChar] > ranges[iSeg].m_Upper[iChar]) {
+ if (codes[iChar] < ranges[seg].m_Lower[iChar] ||
+ codes[iChar] > ranges[seg].m_Upper[iChar]) {
break;
}
++iChar;
}
- if (iChar == ranges[iSeg].m_CharSize)
+ if (iChar == ranges[seg].m_CharSize)
return 2;
if (iChar)
- return (size == ranges[iSeg].m_CharSize) ? 2 : 1;
- iSeg--;
+ return (size == ranges[seg].m_CharSize) ? 2 : 1;
}
return 0;
}
-int GetFourByteCharSizeImpl(uint32_t charcode,
- const std::vector<CPDF_CMap::CodeRange>& ranges) {
+size_t GetFourByteCharSizeImpl(
+ uint32_t charcode,
+ const std::vector<CPDF_CMap::CodeRange>& ranges) {
if (ranges.empty())
return 1;
uint8_t codes[4];
codes[0] = codes[1] = 0x00;
- codes[2] = (uint8_t)(charcode >> 8 & 0xFF);
- codes[3] = (uint8_t)charcode;
- FX_STRSIZE offset = 0;
- int size = 4;
- for (int i = 0; i < 4; ++i) {
- int iSeg = pdfium::CollectionSize<int>(ranges) - 1;
- while (iSeg >= 0) {
- if (ranges[iSeg].m_CharSize < size) {
- --iSeg;
+ codes[2] = static_cast<uint8_t>(charcode >> 8 & 0xFF);
+ codes[3] = static_cast<uint8_t>(charcode);
+ for (FX_STRSIZE offset = 0; offset < 4; offset++) {
+ FX_STRSIZE size = 4 - offset;
+ for (size_t j = 0; j < ranges.size(); j++) {
+ size_t iSeg = (ranges.size() - 1) - j;
+ if (ranges[iSeg].m_CharSize < size)
continue;
- }
- int iChar = 0;
+ FX_STRSIZE iChar = 0;
while (iChar < size) {
if (codes[offset + iChar] < ranges[iSeg].m_Lower[iChar] ||
codes[offset + iChar] > ranges[iSeg].m_Upper[iChar]) {
@@ -235,10 +230,7 @@ int GetFourByteCharSizeImpl(uint32_t charcode,
}
if (iChar == ranges[iSeg].m_CharSize)
return size;
- --iSeg;
}
- --size;
- ++offset;
}
return 1;
}
diff --git a/core/fpdftext/cpdf_linkextract.cpp b/core/fpdftext/cpdf_linkextract.cpp
index 880a4ceb92..a5eafe689a 100644
--- a/core/fpdftext/cpdf_linkextract.cpp
+++ b/core/fpdftext/cpdf_linkextract.cpp
@@ -245,24 +245,24 @@ bool CPDF_LinkExtract::CheckMailLink(CFX_WideString* str) {
// Check the local part.
FX_STRSIZE pPos = aPos.value(); // Used to track the position of '@' or '.'.
- for (FX_STRSIZE i = aPos.value() - 1; i >= 0; i--) {
- wchar_t ch = (*str)[i];
+ for (FX_STRSIZE i = aPos.value(); i > 0; i--) {
+ wchar_t ch = (*str)[i - 1];
if (ch == L'_' || ch == L'-' || FXSYS_iswalnum(ch))
continue;
- if (ch != L'.' || i == pPos - 1 || i == 0) {
- if (i == aPos.value() - 1) {
+ if (ch != L'.' || i == pPos || i == 1) {
+ if (i == aPos.value()) {
// There is '.' or invalid char before '@'.
return false;
}
// End extracting for other invalid chars, '.' at the beginning, or
// consecutive '.'.
- FX_STRSIZE removed_len = i == pPos - 1 ? i + 2 : i + 1;
+ FX_STRSIZE removed_len = i == pPos ? i + 1 : i;
*str = str->Right(str->GetLength() - removed_len);
break;
}
// Found a valid '.'.
- pPos = i;
+ pPos = i - 1;
}
// Check the domain name part.
diff --git a/fpdfsdk/javascript/Document.cpp b/fpdfsdk/javascript/Document.cpp
index d5875aca69..77f67b5c8f 100644
--- a/fpdfsdk/javascript/Document.cpp
+++ b/fpdfsdk/javascript/Document.cpp
@@ -1016,16 +1016,17 @@ bool Document::documentFileName(CJS_Runtime* pRuntime,
return false;
}
CFX_WideString wsFilePath = m_pFormFillEnv->JS_docGetFilePath();
- FX_STRSIZE i = wsFilePath.GetLength() - 1;
- for (; i >= 0; i--) {
- if (wsFilePath[i] == L'\\' || wsFilePath[i] == L'/')
+ FX_STRSIZE i = wsFilePath.GetLength();
+ for (; i > 0; i--) {
+ if (wsFilePath[i - 1] == L'\\' || wsFilePath[i - 1] == L'/')
break;
}
- if (i >= 0 && i < wsFilePath.GetLength() - 1) {
- vp << (wsFilePath.GetBuffer(wsFilePath.GetLength()) + i + 1);
- } else {
+
+ if (i > 0 && i < wsFilePath.GetLength())
+ vp << (wsFilePath.GetBuffer(wsFilePath.GetLength()) + i);
+ else
vp << L"";
- }
+
return true;
}
diff --git a/fxbarcode/oned/BC_OnedEAN8Writer.cpp b/fxbarcode/oned/BC_OnedEAN8Writer.cpp
index 5ca53e0568..6810e9e285 100644
--- a/fxbarcode/oned/BC_OnedEAN8Writer.cpp
+++ b/fxbarcode/oned/BC_OnedEAN8Writer.cpp
@@ -83,20 +83,18 @@ CFX_WideString CBC_OnedEAN8Writer::FilterContents(
}
int32_t CBC_OnedEAN8Writer::CalcChecksum(const CFX_ByteString& contents) {
- FX_STRSIZE odd = 0;
- FX_STRSIZE even = 0;
- FX_STRSIZE j = 1;
- for (FX_STRSIZE i = contents.GetLength() - 1; i >= 0; i--) {
- if (j % 2) {
- odd += FXSYS_atoi(contents.Mid(i, 1).c_str());
+ int32_t odd = 0;
+ int32_t even = 0;
+ for (FX_STRSIZE i = contents.GetLength(); i > 0; i--) {
+ if (i % 2) {
+ odd += FXSYS_atoi(contents.Mid(i - 1, 1).c_str());
} else {
- even += FXSYS_atoi(contents.Mid(i, 1).c_str());
+ even += FXSYS_atoi(contents.Mid(i - 1, 1).c_str());
}
- j++;
}
int32_t checksum = (odd * 3 + even) % 10;
checksum = (10 - checksum) % 10;
- return (checksum);
+ return checksum;
}
uint8_t* CBC_OnedEAN8Writer::EncodeWithHint(const CFX_ByteString& contents,
diff --git a/fxbarcode/oned/BC_OnedUPCAWriter.cpp b/fxbarcode/oned/BC_OnedUPCAWriter.cpp
index 87b68d364f..5782fe4e1a 100644
--- a/fxbarcode/oned/BC_OnedUPCAWriter.cpp
+++ b/fxbarcode/oned/BC_OnedUPCAWriter.cpp
@@ -70,17 +70,17 @@ int32_t CBC_OnedUPCAWriter::CalcChecksum(const CFX_ByteString& contents) {
int32_t odd = 0;
int32_t even = 0;
FX_STRSIZE j = 1;
- for (FX_STRSIZE i = contents.GetLength() - 1; i >= 0; i--) {
+ for (FX_STRSIZE i = contents.GetLength(); i > 0; i--) {
if (j % 2) {
- odd += FXSYS_atoi(contents.Mid(i, 1).c_str());
+ odd += FXSYS_atoi(contents.Mid(i - 1, 1).c_str());
} else {
- even += FXSYS_atoi(contents.Mid(i, 1).c_str());
+ even += FXSYS_atoi(contents.Mid(i - 1, 1).c_str());
}
j++;
}
int32_t checksum = (odd * 3 + even) % 10;
checksum = (10 - checksum) % 10;
- return (checksum);
+ return checksum;
}
uint8_t* CBC_OnedUPCAWriter::EncodeWithHint(const CFX_ByteString& contents,