Do not try to pop from an empty stack

This commit is contained in:
Juergen Spitzmueller 2022-02-04 17:23:52 +01:00
parent 59cabde9e3
commit cc4ed5e04b
4 changed files with 15 additions and 3 deletions

View File

@ -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();
}

View File

@ -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)

View File

@ -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();
}

View File

@ -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