From: Juergen Spitzmueller Date: Fri, 4 Feb 2022 16:23:52 +0000 (+0100) Subject: Do not try to pop from an empty stack X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=cc4ed5e04b41e86e51f44d467680fc597fb94079;hp=59cabde9e3fda6bb6b8b1103f93ba23a3eb7802d;p=features.git Do not try to pop from an empty stack --- diff --git a/src/Font.cpp b/src/Font.cpp index 26218eeeac..3ba04eba47 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -631,7 +631,7 @@ int Font::latexWriteEndChanges(otexstream & os, BufferParams const & bparams, bool const using_begin_end = runparams.use_polyglossia || !lyxrc.language_command_end.empty(); - if (using_begin_end) + if (using_begin_end && !languageStackEmpty()) popLanguageName(); } diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index da97d12ccd..a08f3ac007 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -2805,7 +2805,8 @@ void Paragraph::latex(BufferParams const & bparams, string end_tag = subst(lang_end_command, "$$lang", running_lang); os << from_ascii(end_tag); column += end_tag.length(); - popLanguageName(); + if (!languageStackEmpty()) + popLanguageName(); } // Switch file encoding if necessary (and allowed) diff --git a/src/output_latex.cpp b/src/output_latex.cpp index ac22116976..f6c7375c90 100644 --- a/src/output_latex.cpp +++ b/src/output_latex.cpp @@ -607,6 +607,14 @@ void popLanguageName() } +bool languageStackEmpty() +{ + OutputState * state = getOutputState(); + + return state->lang_switch_depth_.empty(); +} + + string const & openLanguageName() { OutputState * state = getOutputState(); @@ -1768,7 +1776,7 @@ void latexParagraphs(Buffer const & buf, << '\n'; // If we have language_auto_begin, the stack will // already be empty, nothing to pop() - if (using_begin_end && !lyxrc.language_auto_begin) + if (using_begin_end && langOpenedAtThisLevel(state)) popLanguageName(); } diff --git a/src/output_latex.h b/src/output_latex.h index af40a86489..311b2e61b0 100644 --- a/src/output_latex.h +++ b/src/output_latex.h @@ -37,6 +37,9 @@ void pushLanguageName(std::string const & lang, bool localswitch = false); */ void popLanguageName(); +// Check if we have an empty language stack +bool languageStackEmpty(); + /** Return a reference to the last active language opened with polyglossia or when using begin/end commands. If none or when using babel with only a begin command, return a reference to