X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FBufferList.cpp;h=1bee03276b0cbdcc92230e6eb622e8a2825fff28;hb=1acedf11da79f509da706bc8d6d2f491c9676087;hp=506c306a4996cfef274554e936eb2d3c01aa4be4;hpb=9abb7db46800e554f57e865a3e768602ffd9d6f1;p=lyx.git diff --git a/src/BufferList.cpp b/src/BufferList.cpp index 506c306a49..1bee03276b 100644 --- a/src/BufferList.cpp +++ b/src/BufferList.cpp @@ -22,6 +22,7 @@ #include "frontends/alert.h" +#include "support/ExceptionMessage.h" #include "support/debug.h" #include "support/filetools.h" #include "support/gettext.h" @@ -93,7 +94,17 @@ void BufferList::release(Buffer * buf) Buffer * BufferList::newBuffer(string const & s, bool const ronly) { - auto_ptr tmpbuf(new Buffer(s, ronly)); + auto_ptr tmpbuf; + try { tmpbuf.reset(new Buffer(s, ronly)); + } catch (ExceptionMessage const & message) { + if (message.type_ == ErrorException) { + Alert::error(message.title_, message.details_); + exit(1); + } else if (message.type_ == WarningException) { + Alert::warning(message.title_, message.details_); + return 0; + } + } tmpbuf->params().useClassDefaults(); LYXERR(Debug::INFO, "Assigning to buffer " << bstore.size()); bstore.push_back(tmpbuf.get());