From b9e29418471d0d275650c52f976da300f4f42501 Mon Sep 17 00:00:00 2001 From: Richard Kimberly Heck Date: Sat, 25 Apr 2020 22:50:03 -0400 Subject: [PATCH] Make pit_type unsigned (in particular, size_t). This involves not just changing the type but checking that downward loops and similar tricks don't break. --- src/BufferView.cpp | 5 ++++- src/Compare.cpp | 6 +++--- src/RowPainter.cpp | 3 +-- src/support/types.h | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/BufferView.cpp b/src/BufferView.cpp index 621b58ef26..ca59fcb4db 100644 --- a/src/BufferView.cpp +++ b/src/BufferView.cpp @@ -2860,7 +2860,7 @@ void BufferView::updateMetrics(Update::flags & update_flags) int y1 = d->anchor_ypos_ - anchor_pm.ascent(); // We are now just above the anchor paragraph. pit_type pit1 = d->anchor_pit_ - 1; - for (; pit1 >= 0 && y1 >= 0; --pit1) { + while (y1 >= 0) { tm.redoParagraph(pit1); ParagraphMetrics & pm = tm.par_metrics_[pit1]; y1 -= pm.descent(); @@ -2868,6 +2868,9 @@ void BufferView::updateMetrics(Update::flags & update_flags) pm.setPosition(y1); tm.updatePosCache(pit1); y1 -= pm.ascent(); + if (pit1 == 0) + break; + --pit1; } // Redo paragraphs below the anchor if necessary. diff --git a/src/Compare.cpp b/src/Compare.cpp index 60a0b65bb1..931fe76faf 100644 --- a/src/Compare.cpp +++ b/src/Compare.cpp @@ -881,10 +881,10 @@ void Compare::Impl::writeToDestBuffer(DocRange const & range, void Compare::Impl::writeToDestBuffer(ParagraphList const & pars) const { - pit_type const pit = dest_pars_->size() - 1; dest_pars_->insert(dest_pars_->end(), pars.begin(), pars.end()); - if (pit >= 0) - mergeParagraph(dest_buf_->params(), *dest_pars_, pit); + pit_type pit = dest_pars_->size(); + if (pit > 0) + mergeParagraph(dest_buf_->params(), *dest_pars_, pit - 1); } diff --git a/src/RowPainter.cpp b/src/RowPainter.cpp index 6e4cf31ac1..a392c027fa 100644 --- a/src/RowPainter.cpp +++ b/src/RowPainter.cpp @@ -60,8 +60,7 @@ RowPainter::RowPainter(PainterInfo & pi, //lyxerr << "RowPainter: x: " << x_ << " xo: " << xo_ << " yo: " << yo_ << endl; //row_.dump(); - LBUFERR(row.pit() >= 0); - LBUFERR(row.pit() < int(text.paragraphs().size())); + LBUFERR(row.pit() < text.paragraphs().size()); } diff --git a/src/support/types.h b/src/support/types.h index c9cf349592..4b08d7aef0 100644 --- a/src/support/types.h +++ b/src/support/types.h @@ -40,7 +40,7 @@ namespace lyx { */ // FIXME: should be unsigned as well. // however, simply changing it breaks a downward loop somewhere... - typedef ptrdiff_t pit_type; + typedef size_t pit_type; /// a type for the nesting depth of a paragraph typedef size_t depth_type; -- 2.39.5