Peter Kümmel wrote: > This fixes it, then also the static QTranslator makes no problem, > and it would be hard to forbid all static Qt objects.
Only those that interact with QApplication could be problematic. > Could I at least check in the translator stuff, because > at the current state lyx will not even start? With some modifications (see below) yes. I don't understand the translator stuff, but it works here too, and I guess you know what you are doing. > @@ -157,29 +160,34 @@ > > bool use_gui = true; > > +boost::scoped_ptr<LQApplication> auto_del_app; > > void exec(int & argc, char * argv[]) > { > // Force adding of font path _before_ QApplication is initialized > FontLoader::initFontPath(); > > - LQApplication app(argc, argv); > + auto_del_app.reset(new LQApplication(argc, argv)); Here you are basically reintroducing the static app variable, and therefore the crash on exit on linux. A scoped_ptr is supposed to be equivalent to a normal object variable concerning construction and destruction, so if that is needed i think the old solution of Abdel is better. What I don't understand is: Why does it work for other windows users? If this is really necessary we need to reintroduce the #ifdef of Abdel, because I get a crash on Linux with this patch. > // install translation file for Qt built-in dialogs > // These are only installed since Qt 3.2.x > - QTranslator qt_trans(0); > - if (qt_trans.load(QString("qt_") + QTextCodec::locale(), > - qInstallPathTranslations())) { > + QTranslator qt_trans; > + QString language_name = QString("qt_") + QLocale::system().name(); > + language_name.truncate(5); > + if (qt_trans.load(language_name, > + QLibraryInfo::location(QLibraryInfo::TranslationsPath)) > + ) > + { This indentation is not LyX style, the old one is better. > qApp->installTranslator(&qt_trans); > // even if the language calls for RtL, don't do that > - qApp->setReverseLayout(false); > + qApp->setLayoutDirection(Qt::LeftToRight); > lyxerr[Debug::GUI] > << "Successfully installed Qt translations for > locale " > - << QTextCodec::locale() << std::endl; > + << language_name.toStdString().c_str() << > std::endl; toStdString is not available here (see QT_NO_STL). And why do you use c_str? lyxerr << fromqstr(language_name); works. Georg