SIGSEGV with QT6 on command line export if shell-escape

Enrico Forestieri forenr at lyx.org
Thu Sep 21 21:20:04 UTC 2023


On Wed, Sep 20, 2023 at 09:19:31PM -0400, Scott Kostyshak wrote:
> 
>For the ctests, we put the following into preferences:
>
>  \converter "pdflatex" "pdf2" "pdflatex -shell-escape $$i" "latex=pdflatex,hyperref-driver=pdftex"
>
>If I export on the GUI, I get a reasonable warning. But if I export on
>the command-line something goes wrong with Qt6, but not Qt5 for some
>reason. Presumably the issue is that LyX tries to give the warning but
>there's no GUI since it's a command-line export.
>
>Attached is the backtrace.
>
>Can anyone reproduce with Qt6? To reproduce, put the above \coverter
>command in the user directory preferences file, then do a command line
>export (e.g., "-e pdf2 <file.lyx>").

This might be a Qt6 bug. The attached patch works for me.

-- 
Enrico
-------------- next part --------------
diff --git a/src/Converter.cpp b/src/Converter.cpp
index b63f77146a..5c3f0f2dd4 100644
--- a/src/Converter.cpp
+++ b/src/Converter.cpp
@@ -311,16 +311,18 @@ bool Converters::checkAuth(Converter const & conv, string const & doc_fname,
 	bool const has_shell_escape = contains(conv_command, "-shell-escape")
 				|| contains(conv_command, "-enable-write18");
 	if (conv.latex() && has_shell_escape && !use_shell_escape) {
+		string const cmd = use_gui ? "<tt>" + conv_command + "</tt"
+					   : conv_command;
 		docstring const shellescape_warning =
 		      bformat(_("<p>The following LaTeX backend has been "
 		        "configured to allow execution of external programs "
 		        "for any document:</p>"
-		        "<center><p><tt>%1$s</tt></p></center>"
+		        "<center><p>%1$s</p></center>"
 		        "<p>This is a dangerous configuration. Please, "
 		        "consider using the support offered by LyX for "
 		        "allowing this privilege only to documents that "
 			"actually need it, instead.</p>"),
-		        from_utf8(conv_command));
+		        from_utf8(cmd));
 		frontend::Alert::error(_("Security Warning"),
 					shellescape_warning , false);
 	} else if (!conv.latex())


More information about the lyx-devel mailing list