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;