Make more CFDE_TextOut::Piece pointers const.
Add a const version of CFDE_TextOut::Line::GetPieceAtIndex() as well.
Make it slightly more obvious where GetPieceAtIndex() results are being
modified.
Change-Id: I7a0ab216506d02a604a11639af13687d8f14f241
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/70216
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/xfa/fde/cfde_textout.cpp b/xfa/fde/cfde_textout.cpp
index b11366f..b2880f8 100644
--- a/xfa/fde/cfde_textout.cpp
+++ b/xfa/fde/cfde_textout.cpp
@@ -299,7 +299,7 @@
for (auto& line : m_ttoLines) {
for (size_t i = 0; i < line.GetSize(); ++i) {
- Piece* pPiece = line.GetPieceAtIndex(i);
+ const Piece* pPiece = line.GetPieceAtIndex(i);
size_t szCount = GetDisplayPos(pPiece);
if (szCount == 0)
continue;
@@ -451,7 +451,7 @@
pdfium::span<const wchar_t> text_span = m_wsText.span();
size_t iPieceIndex = 0;
size_t iPieceCount = pLine->GetSize();
- Piece* pPiece = pLine->GetPieceAtIndex(0);
+ const Piece* pPiece = pLine->GetPieceAtIndex(0);
int32_t iStartChar = pPiece->iStartChar;
int32_t iPieceWidths = 0;
CFX_BreakType dwBreakStatus = CFX_BreakType::None;
@@ -481,7 +481,7 @@
if (m_ttoLines.empty())
return;
- Piece* pFirstPiece = m_ttoLines.back().GetPieceAtIndex(0);
+ const Piece* pFirstPiece = m_ttoLines.back().GetPieceAtIndex(0);
if (!pFirstPiece)
return;
@@ -500,7 +500,7 @@
}
}
-size_t CFDE_TextOut::GetDisplayPos(Piece* pPiece) {
+size_t CFDE_TextOut::GetDisplayPos(const Piece* pPiece) {
ASSERT(pPiece->iChars >= 0);
if (pdfium::CollectionSize<int32_t>(m_CharPos) < pPiece->iChars)
@@ -541,6 +541,12 @@
return pieces_.size();
}
+const CFDE_TextOut::Piece* CFDE_TextOut::Line::GetPieceAtIndex(
+ size_t index) const {
+ CHECK(pdfium::IndexInBounds(pieces_, index));
+ return &pieces_[index];
+}
+
CFDE_TextOut::Piece* CFDE_TextOut::Line::GetPieceAtIndex(size_t index) {
CHECK(pdfium::IndexInBounds(pieces_, index));
return &pieces_[index];
diff --git a/xfa/fde/cfde_textout.h b/xfa/fde/cfde_textout.h
index bd6b482..900397e 100644
--- a/xfa/fde/cfde_textout.h
+++ b/xfa/fde/cfde_textout.h
@@ -73,6 +73,7 @@
size_t AddPiece(size_t index, const Piece& piece);
size_t GetSize() const;
+ const Piece* GetPieceAtIndex(size_t index) const;
Piece* GetPieceAtIndex(size_t index);
void RemoveLast(size_t count);
@@ -96,7 +97,7 @@
int32_t* pPieceWidths);
void AppendPiece(const Piece& piece, bool bNeedReload, bool bEnd);
void DoAlignment(const CFX_RectF& rect);
- size_t GetDisplayPos(Piece* pPiece);
+ size_t GetDisplayPos(const Piece* pPiece);
std::unique_ptr<CFX_TxtBreak> const m_pTxtBreak;
RetainPtr<CFGAS_GEFont> m_pFont;