From 961db56ed88d274d32b21c126ac239116fbeb48e Mon Sep 17 00:00:00 2001 From: Abdelrazak Younes Date: Wed, 16 May 2007 10:39:41 +0000 Subject: [PATCH] Temptatively fix bug 3546 by testing for more exceptionm types and by unifying the possible errors. I think the reason why we did not have a crash on windows is because we don't use wchar_t and the related basic_filebuf etc. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@18366 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Buffer.cpp | 33 ++++++++++++++++++++++----------- 1 file changed, 22 insertions(+), 11 deletions(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 3e60932d7e..c4c9e37a21 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -34,6 +34,7 @@ #include "LyXAction.h" #include "Lexer.h" #include "Text.h" +#include "LyX.h" #include "LyXRC.h" #include "LyXVC.h" #include "Messages.h" @@ -888,26 +889,36 @@ bool Buffer::makeLaTeXFile(FileName const & fname, if (!openFileWrite(ofs, fname)) return false; + bool failed_export = false; try { writeLaTeXSource(ofs, original_path, runparams, output_preamble, output_body); } - catch (iconv_codecvt_facet_exception &) { - Alert::error(_("Encoding error"), - _("Some characters of your document are not " - "representable in the chosen encoding.\n" - "Changing the document encoding to utf8 could help.")); - return false; + catch (iconv_codecvt_facet_exception & e) { + lyxerr << "Caught iconv exception: " << e.what() << endl; + failed_export = true; + } + catch (std::exception const & e) { + lyxerr << "Caught \"normal\" exception: " << e.what() << endl; + failed_export = true; + } + catch (...) { + lyxerr << "Caught some really weird exception..." << endl; + LyX::cref().emergencyCleanup(); + abort(); } ofs.close(); if (ofs.fail()) { + failed_export = true; lyxerr << "File '" << fname << "' was not closed properly." << endl; - Alert::error(_("Error closing file"), - _("The output file could not be closed properly.\n" - " Probably some characters of your document are not " - "representable in the chosen encoding.\n" - "Changing the document encoding to utf8 could help.")); + } + + if (failed_export) { + Alert::error(_("Encoding error"), + _("Some characters of your document are probably not " + "representable in the chosen encoding.\n" + "Changing the document encoding to utf8 could help.")); return false; } return true; -- 2.39.2