Avoid indexing into std::vector inside a tight loop.
In CCodec_FaxDecoder::v_GetNextLine(), a fixed size vector often needs
to be inverted. Doing so without checking bounds on every access makes a
big difference in non-optimized builds.
BUG=chromium:843899
Change-Id: Iecc0a3da22631a289745245563dab7a7c3c458d0
Reviewed-on: https://pdfium-review.googlesource.com/32744
Reviewed-by: Henrique Nakashima <hnakashima@chromium.org>
Commit-Queue: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcodec/codec/fx_codec_fax.cpp b/core/fxcodec/codec/fx_codec_fax.cpp
index 4a70b53..0a6ba3a 100644
--- a/core/fxcodec/codec/fx_codec_fax.cpp
+++ b/core/fxcodec/codec/fx_codec_fax.cpp
@@ -544,8 +544,10 @@
m_bitpos = bitpos1;
}
if (m_bBlack) {
- for (uint32_t i = 0; i < m_Pitch; ++i)
- m_ScanlineBuf[i] = ~m_ScanlineBuf[i];
+ ASSERT(m_Pitch == m_ScanlineBuf.size());
+ uint8_t* data = m_ScanlineBuf.data();
+ for (size_t i = 0; i < m_ScanlineBuf.size(); ++i)
+ data[i] = ~data[i];
}
return m_ScanlineBuf.data();
}