In order to fix bug 3561 (which is caused by an assertion) I think we need to cleanup and complement (see FIXME there) 'switchEncoding()' in "output_latex.C".

http://bugzilla.lyx.org/show_bug.cgi?id=3561

Here is the first step. Objections?

Abdel.
Index: output_latex.cpp
===================================================================
--- output_latex.cpp    (revision 18220)
+++ output_latex.cpp    (working copy)
@@ -608,42 +608,42 @@
        // This does of course only work in special cases (e.g. switch from
        // tis620-0 to latin1, but the text in latin1 contains ASCII only,
        // but it is the best we can do
-       if (((bparams.inputenc == "auto" && !moving_arg) ||
-            bparams.inputenc == "default") &&
-           oldEnc.name() != newEnc.name() &&
-           oldEnc.package() != Encoding::none &&
-           newEnc.package() != Encoding::none) {
-               LYXERR(Debug::LATEX) << "Changing LaTeX encoding from "
-                                    << oldEnc.name() << " to "
-                                    << newEnc.name() << endl;
-               os << setEncoding(newEnc.iconvName());
-               if (bparams.inputenc != "default") {
-                       docstring const 
inputenc(from_ascii(newEnc.latexName()));
-                       switch (newEnc.package()) {
-                               case Encoding::none:
-                                       break;
-                               case Encoding::inputenc: {
-                                       int count = inputenc.length();
-                                       if (oldEnc.package() == Encoding::CJK) {
-                                               os << "\\end{CJK}";
-                                               count += 9;
-                                       }
-                                       os << "\\inputencoding{" << inputenc << 
'}';
-                                       return count + 16;
-                               }
-                               case Encoding::CJK: {
-                                       int count = inputenc.length();
-                                       if (oldEnc.package() == Encoding::CJK) {
-                                               os << "\\end{CJK}";
-                                               count += 9;
-                                       }
-                                       os << "\\begin{CJK}{" << inputenc << 
"}{}";
-                                       return count + 15;
-                               }
+       if (((bparams.inputenc != "auto" || moving_arg) && bparams.inputenc != 
"default")
+               || oldEnc.name() == newEnc.name()
+               || oldEnc.package() == Encoding::none 
+               || newEnc.package() == Encoding::none)
+               return 0;
+
+       LYXERR(Debug::LATEX) << "Changing LaTeX encoding from "
+               << oldEnc.name() << " to "
+               << newEnc.name() << endl;
+       os << setEncoding(newEnc.iconvName());
+       if (bparams.inputenc == "default")
+               return 0;
+
+       docstring const inputenc(from_ascii(newEnc.latexName()));
+       switch (newEnc.package()) {
+               case Encoding::none:
+                       return 0;
+               case Encoding::inputenc: {
+                       int count = inputenc.length();
+                       if (oldEnc.package() == Encoding::CJK) {
+                               os << "\\end{CJK}";
+                               count += 9;
                        }
+                       os << "\\inputencoding{" << inputenc << '}';
+                       return count + 16;
+                }
+               case Encoding::CJK: {
+                       int count = inputenc.length();
+                       if (oldEnc.package() == Encoding::CJK) {
+                               os << "\\end{CJK}";
+                               count += 9;
+                       }
+                       os << "\\begin{CJK}{" << inputenc << "}{}";
+                       return count + 15;
                }
        }
-       return 0;
 }
 
 } // namespace lyx

Reply via email to