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; }