]> git.lyx.org Git - features.git/commitdiff
Fix bug #10636
authorEnrico Forestieri <forenr@lyx.org>
Mon, 5 Jun 2017 20:59:25 +0000 (22:59 +0200)
committerEnrico Forestieri <forenr@lyx.org>
Mon, 5 Jun 2017 20:59:25 +0000 (22:59 +0200)
The code was not accounting for partial preview of the source code
and was trying to pop a language that was never pushed.

src/output_latex.cpp
status.22x

index d1372748e0323e8a0bb974d87a7f376b95ca75fc..c5fbbb71e7f304b86353a79bb97bf80f80258862 100644 (file)
@@ -211,9 +211,9 @@ static TeXEnvironmentData prepareEnvironment(Buffer const & buf,
 
        // For polyglossia, switch language outside of environment, if possible.
        if (par_lang != prev_par_lang) {
-               if (!lang_end_command.empty() &&
+               if ((!use_polyglossia || langOpenedAtThisLevel(state)) &&
+                   !lang_end_command.empty() &&
                    prev_par_lang != doc_lang &&
-                   atSameLastLangSwitchDepth(state) &&
                    !prev_par_lang.empty()) {
                        os << from_ascii(subst(
                                lang_end_command,
@@ -797,7 +797,8 @@ void TeXOnePar(Buffer const & buf,
                                          && priorpar->getDepth() <= par.getDepth())
                                  || priorpar->getDepth() < par.getDepth())))
        {
-               if (!lang_end_command.empty() &&
+               if ((!use_polyglossia || langOpenedAtThisLevel(state)) &&
+                   !lang_end_command.empty() &&
                    prev_lang != outer_lang &&
                    !prev_lang.empty() &&
                    (!use_polyglossia || !style.isEnvironment()))
@@ -1094,8 +1095,11 @@ void TeXOnePar(Buffer const & buf,
                                        if (use_polyglossia)
                                                pushPolyglossiaLang(current_lang, localswitch);
                                }
-                       } else if (!par_lang.empty()) {
-                               // If we are in an environment, we have to close the "outer" language afterwards
+                       } else if ((!use_polyglossia ||
+                                   langOpenedAtThisLevel(state)) &&
+                                  !par_lang.empty()) {
+                               // If we are in an environment, we have to
+                               // close the "outer" language afterwards
                                string const & pol_lang = openPolyglossiaLang(state);
                                if (!style.isEnvironment()
                                    || (close_lang_switch
index dd6468724c429c14212e79874aad260c52f8534e..26373402bca673cc7d767e3d29ccfc744dae2b84 100644 (file)
@@ -46,6 +46,9 @@ What's new
 
 * USER INTERFACE
 
+- Fix crash occurring in certain circumstances when previewing the source
+  of a single paragraph containing a language switch (bug 10636).
+
 - Remove duplicate entries from the Symbols dialog (bug 10644).
 
 - Always show the float type in the float inset label (bug 10618).