[LyX/master] Do not return copies of string members

Enrico Forestieri forenr at lyx.org
Tue May 9 20:08:41 UTC 2023


On Fri, May 05, 2023 at 07:28:59PM +0200, Jean-Marc Lasgouttes wrote:
> 
>commit 3ae5d6bdec1df23cc0d848b2d8bf6b0932eeee3b
>Author: Jean-Marc Lasgouttes <lasgouttes at lyx.org>
>Date:   Fri May 5 20:35:23 2023 +0200
>
>    Do not return copies of string members
>
>    This fixes the g++ 12 warnings below.

After this commit my cygwin build crashes badly at startup. I can't even 
get a backtrace. What is strange is that a native Windows build works 
fine, instead. Both builds use the same version of gcc:

$ g++ -dumpfullversion
11.3.0

$ x86_64-w64-mingw32-g++ -dumpfullversion
11.3.0

I am baffled.

>    ../../master/src/Converter.cpp:714:55: warning: possibly dangling 
>    reference to a temporary [-Wdangling-reference]
>      714 |                                         Mover const & mover = getMover(conv.to());
>          |                                                       ^~~~~
>    ../../master/src/Converter.cpp:714:71: note: the temporary was destroyed at the end of the full expression ‘lyx::getMover(lyx::Converter::to() const())’
>      714 |                                         Mover const & mover = getMover(conv.to());
>          |                                                               ~~~~~~~~^~~~~~~~~~~
>    ../../master/src/Converter.cpp:786:39: warning: possibly dangling reference to a temporary [-Wdangling-reference]
>      786 |                         Mover const & mover = getMover(conv.from());
>          |                                       ^~~~~
>    ../../master/src/Converter.cpp:786:55: note: the temporary was destroyed at the end of the full expression ‘lyx::getMover(lyx::Converter::from() const())’
>      786 |                         Mover const & mover = getMover(conv.from());
>---
> src/Converter.h |   18 +++++++++---------
> 1 files changed, 9 insertions(+), 9 deletions(-)
>
>diff --git a/src/Converter.h b/src/Converter.h
>index 091dbcd..9e8249d 100644
>--- a/src/Converter.h
>+++ b/src/Converter.h
>@@ -52,15 +52,15 @@ public:
> 	///
> 	void readFlags();
> 	///
>-	std::string const from() const { return from_; }
>+	std::string const & from() const { return from_; }
> 	///
>-	std::string const to() const { return to_; }
>+	std::string const & to() const { return to_; }
> 	///
>-	std::string const command() const { return command_; }
>+	std::string const & command() const { return command_; }
> 	///
> 	void setCommand(std::string const & command);
> 	///
>-	std::string const flags() const { return flags_; }
>+	std::string const & flags() const { return flags_; }
> 	///
> 	void setFlags(std::string const & flags) { flags_ = flags; }
> 	///
>@@ -74,7 +74,7 @@ public:
> 	///
> 	bool latex() const { return latex_; }
> 	///
>-	std::string const latex_flavor() const { return latex_flavor_; }
>+	std::string const & latex_flavor() const { return latex_flavor_; }
> 	///
> 	bool docbook() const { return docbook_; }
> 	///
>@@ -84,13 +84,13 @@ public:
> 	///
> 	bool nice() const { return nice_; }
> 	///
>-	std::string const result_dir() const { return result_dir_; }
>+	std::string const & result_dir() const { return result_dir_; }
> 	///
>-	std::string const result_file() const { return result_file_; }
>+	std::string const & result_file() const { return result_file_; }
> 	///
>-	std::string const parselog() const { return parselog_; }
>+	std::string const & parselog() const { return parselog_; }
> 	///
>-	std::string const hyperref_driver() const { return href_driver_; }
>+	std::string const & hyperref_driver() const { return href_driver_; }
>
> private:
> 	///
>-- 
>lyx-cvs mailing list
>lyx-cvs at lists.lyx.org
>http://lists.lyx.org/mailman/listinfo/lyx-cvs

-- 
Enrico


More information about the lyx-devel mailing list