Remove startPos argument from EncodeToEdifactCodewords()
It is always passed as 0. Then convert to size_t since possibility
of underflow is now longer possible.
Change-Id: Ic9980b4bae65e4c98b131aac505dd583792f2b07
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/90930
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/fxbarcode/datamatrix/BC_EdifactEncoder.cpp b/fxbarcode/datamatrix/BC_EdifactEncoder.cpp
index fc62210..7c0e931 100644
--- a/fxbarcode/datamatrix/BC_EdifactEncoder.cpp
+++ b/fxbarcode/datamatrix/BC_EdifactEncoder.cpp
@@ -32,17 +32,17 @@
namespace {
-WideString EncodeToEdifactCodewords(const WideString& sb, int32_t startPos) {
- int32_t len = sb.GetLength() - startPos;
+WideString EncodeToEdifactCodewords(const WideString& sb) {
+ size_t len = sb.GetLength();
if (len == 0)
return WideString();
- wchar_t c1 = sb[startPos];
- wchar_t c2 = len >= 2 ? sb[startPos + 1] : 0;
- wchar_t c3 = len >= 3 ? sb[startPos + 2] : 0;
- wchar_t c4 = len >= 4 ? sb[startPos + 3] : 0;
+ wchar_t c1 = sb[0];
+ wchar_t c2 = len >= 2 ? sb[1] : 0;
+ wchar_t c3 = len >= 3 ? sb[2] : 0;
+ wchar_t c4 = len >= 4 ? sb[3] : 0;
int32_t v = (c1 << 18) + (c2 << 12) + (c3 << 6) + c4;
- constexpr int32_t kBuflen = 3;
+ constexpr size_t kBuflen = 3;
wchar_t cw[kBuflen];
cw[0] = static_cast<wchar_t>((v >> 16) & 255);
cw[1] = static_cast<wchar_t>((v >> 8) & 255);
@@ -69,7 +69,7 @@
}
int32_t restChars = count - 1;
- WideString encoded = EncodeToEdifactCodewords(buffer, 0);
+ WideString encoded = EncodeToEdifactCodewords(buffer);
if (encoded.IsEmpty())
return false;
@@ -134,7 +134,7 @@
context->m_pos++;
size_t count = buffer.GetLength();
if (count >= 4) {
- WideString encoded = EncodeToEdifactCodewords(buffer, 0);
+ WideString encoded = EncodeToEdifactCodewords(buffer);
if (encoded.IsEmpty())
return false;