[LyX/master] Make pit_type unsigned (in particular, size_t).

Richard Kimberly Heck rikiheck at lyx.org
Sun Apr 26 02:34:04 UTC 2020


commit b9e29418471d0d275650c52f976da300f4f42501
Author: Richard Kimberly Heck <rikiheck at lyx.org>
Date:   Sat Apr 25 22:50:03 2020 -0400

    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 621b58e..ca59fcb 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 60a0b65..931fe76 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 6e4cf31..a392c02 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 c9cf349..4b08d7a 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;


More information about the lyx-cvs mailing list