Speed up DetermineConsecutiveDigitCount() in debug builds.
BUG=chromium:930394
Change-Id: I4e3080d5f813cb7e84a0198c1a7f4d826fc6e09b
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/51410
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp b/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp
index 469a8eb..ed51f81 100644
--- a/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp
+++ b/fxbarcode/datamatrix/BC_ASCIIEncoder.cpp
@@ -41,9 +41,13 @@
}
size_t DetermineConsecutiveDigitCount(const WideString& msg, size_t startpos) {
+ // This is faster in debug builds and helpful for fuzzers.
+ // Access |data| with care.
size_t count = 0;
- for (size_t i = startpos; i < msg.GetLength(); ++i) {
- if (!FXSYS_IsDecimalDigit(msg[i]))
+ const size_t size = msg.GetLength();
+ const wchar_t* data = msg.c_str();
+ for (size_t i = startpos; i < size; ++i) {
+ if (!FXSYS_IsDecimalDigit(data[i]))
break;
++count;
}