Patches to review

Yuriy Skalko yuriy.skalko at gmail.com
Thu Nov 26 21:07:39 UTC 2020


Here are next 5 patches.

Yuriy
-------------- next part --------------
From bdf2a935f79f465e75bafdedc3e50a4a513e24ca Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.skalko at gmail.com>
Date: Thu, 26 Nov 2020 00:17:29 +0200
Subject: [PATCH 1/5] Use to_string function

---
 src/client/client.cpp | 10 +---------
 1 file changed, 1 insertion(+), 9 deletions(-)

diff --git a/src/client/client.cpp b/src/client/client.cpp
index dd69fe20f5..0a80107009 100644
--- a/src/client/client.cpp
+++ b/src/client/client.cpp
@@ -93,14 +93,6 @@ Messages const & getMessages(string const &)
 
 namespace support {
 
-string itoa(unsigned int i)
-{
-	char buf[20];
-	sprintf(buf, "%d", i);
-	return buf;
-}
-
-
 /// Returns the absolute pathnames of all lyx local sockets in
 /// file system encoding.
 /// Parts stolen from lyx::support::DirList().
@@ -469,7 +461,7 @@ int h(vector<docstring> const &)
 
 
 docstring clientName =
-	from_ascii(itoa(::getppid()) + ">" + itoa(::getpid()));
+	from_ascii(to_string(::getppid()) + ">" + to_string(::getpid()));
 
 int n(vector<docstring> const & arg)
 {
-- 
2.28.0.windows.1

-------------- next part --------------
From 2af4904d7a947be564f74f005c2b8ff47859ca47 Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.skalko at gmail.com>
Date: Thu, 26 Nov 2020 01:11:07 +0200
Subject: [PATCH 2/5] Constify

---
 src/Counters.cpp              |  2 +-
 src/Counters.h                |  2 +-
 src/Server.cpp                |  2 +-
 src/Server.h                  |  4 ++--
 src/graphics/PreviewImage.cpp |  4 ++--
 src/lyxfind.cpp               | 28 ++++++++++++++--------------
 src/tex2lyx/Parser.cpp        |  2 +-
 src/tex2lyx/Parser.h          |  2 +-
 8 files changed, 23 insertions(+), 23 deletions(-)

diff --git a/src/Counters.cpp b/src/Counters.cpp
index 8477d5283a..139dc9bcd7 100644
--- a/src/Counters.cpp
+++ b/src/Counters.cpp
@@ -413,7 +413,7 @@ bool Counters::remove(docstring const & cnt)
 }
 
 
-void Counters::copy(Counters const & from, Counters & to, docstring const & match)
+void Counters::copy(Counters const & from, Counters & to, docstring const & match) const
 {
 	for (auto const & ctr : counterList_) {
 		if (ctr.first.find(match) != string::npos || match == "") {
diff --git a/src/Counters.h b/src/Counters.h
index 4708f5a331..e6554a284f 100644
--- a/src/Counters.h
+++ b/src/Counters.h
@@ -163,7 +163,7 @@ public:
 	/// Copy counters whose name matches match from the &from to
 	/// the &to array of counters. Empty string matches all.
 	void copy(Counters const & from, Counters & to,
-		  docstring const & match = docstring());
+		  docstring const & match = docstring()) const;
 	/** returns the expanded string representation of counter \c
 	 *  c. The \c lang code is used to translate the string.
 	 */
diff --git a/src/Server.cpp b/src/Server.cpp
index fe503926de..79340492c6 100644
--- a/src/Server.cpp
+++ b/src/Server.cpp
@@ -1003,7 +1003,7 @@ struct Sleep : QThread
 } // namespace
 
 
-bool LyXComm::loadFilesInOtherInstance()
+bool LyXComm::loadFilesInOtherInstance() const
 {
 	int pipefd;
 	FileName const pipe(inPipeName());
diff --git a/src/Server.h b/src/Server.h
index 9257704b43..b277284ace 100644
--- a/src/Server.h
+++ b/src/Server.h
@@ -120,7 +120,7 @@ private:
 	void closeConnection();
 
 	/// Load files in another running instance of LyX
-	bool loadFilesInOtherInstance();
+	bool loadFilesInOtherInstance() const;
 
 #ifndef _WIN32
 	/// start a pipe
@@ -212,7 +212,7 @@ public:
 	///
 	void notifyClient(std::string const &);
 	///
-	bool deferredLoadingToOtherInstance() { return pipes_.deferredLoading(); }
+	bool deferredLoadingToOtherInstance() const { return pipes_.deferredLoading(); }
 
 	/// whilst crashing etc.
 	void emergencyCleanup() { pipes_.emergencyCleanup(); }
diff --git a/src/graphics/PreviewImage.cpp b/src/graphics/PreviewImage.cpp
index b80bf9415b..062dd6e7bc 100644
--- a/src/graphics/PreviewImage.cpp
+++ b/src/graphics/PreviewImage.cpp
@@ -35,7 +35,7 @@ public:
 	///
 	~Impl();
 	///
-	Image const * image();
+	Image const * image() const;
 	///
 	void statusChanged();
 
@@ -125,7 +125,7 @@ PreviewImage::Impl::~Impl()
 }
 
 
-Image const * PreviewImage::Impl::image()
+Image const * PreviewImage::Impl::image() const
 {
 	if (iloader_.status() == WaitingToLoad)
 		iloader_.startLoading();
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index c438052d2e..fc7b0b737a 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -1101,20 +1101,20 @@ public:
   int depts[MAXOPENED];
   int closes[MAXOPENED];
   int actualdeptindex;
-  int previousNotIgnored(int);
-  int nextNotIgnored(int);
+  int previousNotIgnored(int) const;
+  int nextNotIgnored(int) const;
   void handleOpenP(int i);
   void handleCloseP(int i, bool closingAllowed);
   void resetOpenedP(int openPos);
   void addIntervall(int upper);
   void addIntervall(int low, int upper); /* if explicit */
   void removeAccents();
-  void setForDefaultLang(KeyInfo const & defLang);
+  void setForDefaultLang(KeyInfo const & defLang) const;
   int findclosing(int start, int end, char up, char down, int repeat);
   void handleParentheses(int lastpos, bool closingAllowed);
   bool hasTitle;
   int langcount;	// Number of disabled language specs up to current position in actual interval
-  int isOpeningPar(int pos);
+  int isOpeningPar(int pos) const;
   string titleValue;
   void output(ostringstream &os, int lastpos);
   // string show(int lastpos);
@@ -1122,7 +1122,7 @@ public:
 
 vector<Border> Intervall::borders = vector<Border>(30);
 
-int Intervall::isOpeningPar(int pos)
+int Intervall::isOpeningPar(int pos) const
 {
   if ((pos < 0) || (size_t(pos) >= par.size()))
     return 0;
@@ -1137,7 +1137,7 @@ int Intervall::isOpeningPar(int pos)
   return 1;
 }
 
-void Intervall::setForDefaultLang(KeyInfo const & defLang)
+void Intervall::setForDefaultLang(KeyInfo const & defLang) const
 {
   // Enable the use of first token again
   if (ignoreidx >= 0) {
@@ -1418,7 +1418,7 @@ void Intervall::resetOpenedP(int openPos)
   closes[1] = -1;
 }
 
-int Intervall::previousNotIgnored(int start)
+int Intervall::previousNotIgnored(int start) const
 {
     int idx = 0;                          /* int intervalls */
     for (idx = ignoreidx; idx >= 0; --idx) {
@@ -1430,7 +1430,7 @@ int Intervall::previousNotIgnored(int start)
     return start;
 }
 
-int Intervall::nextNotIgnored(int start)
+int Intervall::nextNotIgnored(int start) const
 {
     int idx = 0;                          /* int intervalls */
     for (idx = 0; idx <= ignoreidx; idx++) {
@@ -1504,7 +1504,7 @@ class LatexInfo {
     else
       return false;
   };
-  int find(int start, KeyInfo::KeyType keytype) {
+  int find(int start, KeyInfo::KeyType keytype) const {
     if (start < 0)
       return -1;
     int tmpIdx = start;
@@ -1526,7 +1526,7 @@ class LatexInfo {
     else
       return entries_[keyinfo];
   };
-  void setForDefaultLang(KeyInfo &defLang) {interval_.setForDefaultLang(defLang);};
+  void setForDefaultLang(KeyInfo const & defLang) {interval_.setForDefaultLang(defLang);};
   void addIntervall(int low, int up) { interval_.addIntervall(low, up); };
 };
 
@@ -1577,14 +1577,14 @@ class MathInfo {
     m.mathSize = end - start;
     entries_.push_back(m);
   }
-  bool empty() { return entries_.empty(); };
-  size_t getEndPos() {
+  bool empty() const { return entries_.empty(); };
+  size_t getEndPos() const {
     if (entries_.empty() || (actualIdx_ >= entries_.size())) {
       return 0;
     }
     return entries_[actualIdx_].mathEnd;
   }
-  size_t getStartPos() {
+  size_t getStartPos() const {
     if (entries_.empty() || (actualIdx_ >= entries_.size())) {
       return 100000;                    /*  definitely enough? */
     }
@@ -1594,7 +1594,7 @@ class MathInfo {
     actualIdx_ = 0;
     return getStartPos();
   }
-  size_t getSize() {
+  size_t getSize() const {
     if (entries_.empty() || (actualIdx_ >= entries_.size())) {
       return size_t(0);
     }
diff --git a/src/tex2lyx/Parser.cpp b/src/tex2lyx/Parser.cpp
index ee25db246d..67e0323c96 100644
--- a/src/tex2lyx/Parser.cpp
+++ b/src/tex2lyx/Parser.cpp
@@ -877,7 +877,7 @@ void Parser::dump() const
 }
 
 
-void Parser::error(string const & msg)
+void Parser::error(string const & msg) const
 {
 	cerr << "Line ~" << lineno_ << ":  parse error: " << msg << endl;
 	dump();
diff --git a/src/tex2lyx/Parser.h b/src/tex2lyx/Parser.h
index 9f174c8a0b..d28036710e 100644
--- a/src/tex2lyx/Parser.h
+++ b/src/tex2lyx/Parser.h
@@ -310,7 +310,7 @@ public:
 	///
 	std::string verbatimOption();
 	///
-	void error(std::string const & msg);
+	void error(std::string const & msg) const;
 	/// The previous token.
 	Token const prev_token() const;
 	/// The current token.
-- 
2.28.0.windows.1

-------------- next part --------------
From ad0511626d386c85611aefda7a5bfa00365314ea Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.skalko at gmail.com>
Date: Thu, 26 Nov 2020 22:10:45 +0200
Subject: [PATCH 3/5] Use iround function, amend c0ce79452f

---
 src/Row.cpp                   | 5 +++--
 src/Spacing.cpp               | 5 +++--
 src/graphics/PreviewImage.cpp | 3 ++-
 3 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/Row.cpp b/src/Row.cpp
index 9ab7f11037..02923d1dd1 100644
--- a/src/Row.cpp
+++ b/src/Row.cpp
@@ -26,6 +26,7 @@
 #include "support/debug.h"
 #include "support/lassert.h"
 #include "support/lstrings.h"
+#include "support/lyxlib.h"
 
 #include <algorithm>
 #include <ostream>
@@ -297,7 +298,7 @@ int Row::left_x() const
 		x += cit->full_width();
 		++cit;
 	}
-	return int(x + 0.5);
+	return support::iround(x);
 }
 
 
@@ -313,7 +314,7 @@ int Row::right_x() const
 		else
 			break;
 	}
-	return int(x + 0.5);
+	return support::iround(x);
 }
 
 
diff --git a/src/Spacing.cpp b/src/Spacing.cpp
index 9ac8345ab4..ce645398f8 100644
--- a/src/Spacing.cpp
+++ b/src/Spacing.cpp
@@ -12,8 +12,9 @@
 #include <config.h>
 
 #include "Spacing.h"
-#include "support/lstrings.h"
 #include "support/convert.h"
+#include "support/lstrings.h"
+#include "support/lyxlib.h"
 
 #include <ostream>
 
@@ -55,7 +56,7 @@ void Spacing::set(Spacing::Space sp, string const & val)
 {
 	space = sp;
 	if (sp == Other) {
-		switch (int(convert<double>(val) * 1000 + 0.5)) {
+		switch (support::iround(convert<double>(val) * 1000)) {
 		case 1000:
 			space = Single;
 			break;
diff --git a/src/graphics/PreviewImage.cpp b/src/graphics/PreviewImage.cpp
index 062dd6e7bc..b31af6fbd9 100644
--- a/src/graphics/PreviewImage.cpp
+++ b/src/graphics/PreviewImage.cpp
@@ -19,6 +19,7 @@
 #include "PreviewLoader.h"
 
 #include "support/FileName.h"
+#include "support/lyxlib.h"
 
 
 using namespace std;
@@ -85,7 +86,7 @@ Dimension PreviewImage::dim() const
 	if (!image)
 		return dim;
 
-	dim.asc = int(pimpl_->ascent_frac_ * double(image->height()) + 0.5);
+	dim.asc = support::iround(pimpl_->ascent_frac_ * double(image->height()));
 	dim.des = image->height() - dim.asc;
 	dim.wid = image->width();
 	return dim;
-- 
2.28.0.windows.1

-------------- next part --------------
From b3326101f4b96b27a97bed550c3ec6ef2e600ab0 Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.skalko at gmail.com>
Date: Thu, 26 Nov 2020 22:14:43 +0200
Subject: [PATCH 4/5] Replace ;;

---
 src/insets/InsetNewpage.cpp           | 2 +-
 src/mathed/InsetMathGrid.cpp          | 2 +-
 src/mathed/InsetMathMacroTemplate.cpp | 2 +-
 src/mathed/InsetMathSpecialChar.cpp   | 2 +-
 4 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/insets/InsetNewpage.cpp b/src/insets/InsetNewpage.cpp
index 9f343ae2e2..897a946887 100644
--- a/src/insets/InsetNewpage.cpp
+++ b/src/insets/InsetNewpage.cpp
@@ -162,7 +162,7 @@ void InsetNewpage::draw(PainterInfo & pi, int x, int y) const
 		pi.pain.lines(xp, yp, 2, ColorName());
 
 		//mid-rule
-		xp[0] = xp[1] = int(x + wid * 0.5);;
+		xp[0] = xp[1] = int(x + wid * 0.5);
 		yp[0] = int(y - 0.875 * asc * 0.75);
 		yp[1] = int(y - 0.125 * asc * 0.75);
 		pi.pain.lines(xp, yp, 2, ColorName());
diff --git a/src/mathed/InsetMathGrid.cpp b/src/mathed/InsetMathGrid.cpp
index ba3bda6d95..7158df2e43 100644
--- a/src/mathed/InsetMathGrid.cpp
+++ b/src/mathed/InsetMathGrid.cpp
@@ -483,7 +483,7 @@ void InsetMathGrid::metrics(MetricsInfo & mi, Dimension & dim) const
 	colinfo_[ncols()].width  = 0;
 
 	// compute horizontal offsets
-	colinfo_[0].offset = border() + colinfo_[0].lines * vlinesep();;
+	colinfo_[0].offset = border() + colinfo_[0].lines * vlinesep();
 	for (col_type col = 1; col <= ncols(); ++col) {
 		colinfo_[col].offset =
 			colinfo_[col - 1].offset +
diff --git a/src/mathed/InsetMathMacroTemplate.cpp b/src/mathed/InsetMathMacroTemplate.cpp
index 1152936ee2..7f43586513 100644
--- a/src/mathed/InsetMathMacroTemplate.cpp
+++ b/src/mathed/InsetMathMacroTemplate.cpp
@@ -573,7 +573,7 @@ void InsetMathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const
 	if (macro)
 		macro->unlock();
 
-	dim.wid += leftOffset(mi.base.bv) + rightOffset(mi.base.bv);;
+	dim.wid += leftOffset(mi.base.bv) + rightOffset(mi.base.bv);
 	dim.des += bottomOffset(mi.base.bv);
 	dim.asc += topOffset(mi.base.bv);
 }
diff --git a/src/mathed/InsetMathSpecialChar.cpp b/src/mathed/InsetMathSpecialChar.cpp
index 701bcc8686..f2a9a737f3 100644
--- a/src/mathed/InsetMathSpecialChar.cpp
+++ b/src/mathed/InsetMathSpecialChar.cpp
@@ -56,7 +56,7 @@ Inset * InsetMathSpecialChar::clone() const
 void InsetMathSpecialChar::metrics(MetricsInfo & mi, Dimension & dim) const
 {
 	if (mi.base.fontname == "mathnormal") {
-		Changer dummy = mi.base.font.changeShape(UP_SHAPE);;
+		Changer dummy = mi.base.font.changeShape(UP_SHAPE);
 		dim = theFontMetrics(mi.base.font).dimension(char_);
 	} else {
 		frontend::FontMetrics const & fm = theFontMetrics(mi.base.font);
-- 
2.28.0.windows.1

-------------- next part --------------
From c7b38c8be83047afa92d88ac8e1750073e997863 Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.skalko at gmail.com>
Date: Thu, 26 Nov 2020 23:01:18 +0200
Subject: [PATCH 5/5] Fix signed integer overflow on x = 0, detected by GCC
 sanitizer

---
 src/support/lstrings.cpp | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/support/lstrings.cpp b/src/support/lstrings.cpp
index f0e79b88b3..9aac66a754 100644
--- a/src/support/lstrings.cpp
+++ b/src/support/lstrings.cpp
@@ -1446,8 +1446,8 @@ std::string formatFPNumber(double x)
 	os << std::fixed;
 	// Prevent outputs of 23.4200000000000017 but output small numbers
 	// with at least 6 significant digits.
-	double const logarithm = log10(fabs(x));
-	os << std::setprecision(max(6 - iround(logarithm), 0)) << x;
+	int const precision = (x == 0.0) ? 0 : max(6 - iround(log10(fabs(x))), 0);
+	os << std::setprecision(precision) << x;
 	string result = os.str();
 	if (result.find('.') != string::npos) {
 		result = rtrim(result, "0");
-- 
2.28.0.windows.1



More information about the lyx-devel mailing list