diff --git a/src/LyX.cpp b/src/LyX.cpp index 0e1b19faf6..4e97f7ae64 100644 --- a/src/LyX.cpp +++ b/src/LyX.cpp @@ -471,45 +471,39 @@ void LyX::earlyExit(int status) int LyX::init(int & argc, char * argv[]) { - try { - // check for any spurious extra arguments - // other than documents - for (int argi = 1; argi < argc ; ++argi) { - if (argv[argi][0] == '-') { - lyxerr << to_utf8( - bformat(_("Wrong command line option `%1$s'. Exiting."), - from_utf8(os::utf8_argv(argi)))) << endl; - return EXIT_FAILURE; - } - } - - // Initialization of LyX (reads lyxrc and more) - LYXERR(Debug::INIT, "Initializing LyX::init..."); - bool success = init(); - LYXERR(Debug::INIT, "Initializing LyX::init...done"); - if (!success) - return EXIT_FAILURE; - // Remaining arguments are assumed to be files to load. - for (int argi = 1; argi < argc; ++argi) - pimpl_->files_to_load_.push_back(os::utf8_argv(argi)); - - if (!use_gui && pimpl_->files_to_load_.empty()) { - lyxerr << to_utf8(_("Missing filename for this operation.")) << endl; + // check for any spurious extra arguments + // other than documents + for (int argi = 1; argi < argc ; ++argi) { + if (argv[argi][0] == '-') { + lyxerr << to_utf8( + bformat(_("Wrong command line option `%1$s'. Exiting."), + from_utf8(os::utf8_argv(argi)))) << endl; return EXIT_FAILURE; } + } - if (first_start) { - pimpl_->files_to_load_.push_back( - i18nLibFileSearch("examples", "splash.lyx").absFileName()); - } + // Initialization of LyX (reads lyxrc and more) + LYXERR(Debug::INIT, "Initializing LyX::init..."); + bool success = init(); + LYXERR(Debug::INIT, "Initializing LyX::init...done"); + if (!success) + return EXIT_FAILURE; - return EXIT_SUCCESS; + // Remaining arguments are assumed to be files to load. + for (int argi = 1; argi < argc; ++argi) + pimpl_->files_to_load_.push_back(os::utf8_argv(argi)); - } catch (exception const &e) { - // This can happen _in_theory_ in replaceEnvironmentPath - lyxerr << "Caught exception `" << e.what() << "'." << endl; + if (!use_gui && pimpl_->files_to_load_.empty()) { + lyxerr << to_utf8(_("Missing filename for this operation.")) << endl; return EXIT_FAILURE; } + + if (first_start) { + pimpl_->files_to_load_.push_back( + i18nLibFileSearch("examples", "splash.lyx").absFileName()); + } + + return EXIT_SUCCESS; } diff --git a/src/Server.cpp b/src/Server.cpp index 5f5d873f54..a83911dc69 100644 --- a/src/Server.cpp +++ b/src/Server.cpp @@ -1067,10 +1067,7 @@ Server::~Server() string message; for (int i = 0; i != numclients_; ++i) { message = "LYXSRV:" + clients_[i] + ":bye\n"; - // ignore exceptions, we are quitting anyway - try { - pipes_.send(message); - } catch (...) {} + pipes_.send(message); } } diff --git a/src/support/filetools.cpp b/src/support/filetools.cpp index 694ae53099..60bd72f905 100644 --- a/src/support/filetools.cpp +++ b/src/support/filetools.cpp @@ -686,19 +686,27 @@ string const replaceEnvironmentPath(string const & path) // $[A-Za-z_][A-Za-z_0-9]* static string const envvar = "[$]([A-Za-z_][A-Za-z_0-9]*)"; - static regex const envvar_br_re("(.*)" + envvar_br + "(.*)"); - static regex const envvar_re("(.*)" + envvar + "(.*)"); - string result = path; - while (1) { - smatch what; - if (!regex_match(result, what, envvar_br_re)) { - if (!regex_match(result, what, envvar_re)) - break; + // Coverity thinks that the regex constructor can return an + // exception. We know that it is not true since our regex are + // hardcoded, but we have to protect against that nevertheless. + try { + static regex const envvar_br_re("(.*)" + envvar_br + "(.*)"); + static regex const envvar_re("(.*)" + envvar + "(.*)"); + string result = path; + while (1) { + smatch what; + if (!regex_match(result, what, envvar_br_re)) { + if (!regex_match(result, what, envvar_re)) + break; + } + string env_var = getEnv(what.str(2)); + result = what.str(1) + env_var + what.str(3); } - string env_var = getEnv(what.str(2)); - result = what.str(1) + env_var + what.str(3); + return result; + } catch (exception const & e) { + LYXERR0("Something is very wrong: " << e.what()); + return path; } - return result; }