From 57057149200eb66fe98c022bd1c5ed28f387d4a8 Mon Sep 17 00:00:00 2001 From: Alfredo Braunstein Date: Tue, 14 Oct 2003 12:49:15 +0000 Subject: [PATCH] Fix bug 1323 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@7918 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/ChangeLog | 9 +++++++++ src/factory.C | 14 ++++++++++---- src/paragraph_funcs.C | 14 ++++++++++++-- 3 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 13cc7b1b07..d97f9b4f97 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2003-10-14 Alfredo Braunstein + + * paragraph_funcs.C (readParToken): report unknown insets as error + boxes. Use the outer paragraph as location (also for unknown + tokens). + + * factory.C (readInset): do not abort on reading an unknown inset. + Eat it and return 0. + 2003-10-13 Angus Leeming * lyx_main.C (LyX): remove call to setDisplayTranslator(). diff --git a/src/factory.C b/src/factory.C index 6c728827d2..ca58000af5 100644 --- a/src/factory.C +++ b/src/factory.C @@ -366,8 +366,11 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf) } else if (cmdName == "printindex") { inset = new InsetPrintIndex(inscmd); } else { - lyxerr << "unknown CommandInset '" << cmdName << "'" << std::endl; - BOOST_ASSERT(false); + lyxerr << "unknown CommandInset '" << cmdName + << "'" << std::endl; + while (lex.isOK() && lex.getString() != "\\end_inset") + lex.next(); + return 0; } } else { if (tmptok == "Quotes") { @@ -430,8 +433,11 @@ InsetOld * readInset(LyXLex & lex, Buffer const & buf) } else if (tmptok == "FloatList") { inset = new InsetFloatList; } else { - lyxerr << "unknown Inset type '" << tmptok << "'" << std::endl; - BOOST_ASSERT(false); + lyxerr << "unknown Inset type '" << tmptok + << "'" << std::endl; + while (lex.isOK() && lex.getString() != "\\end_inset") + lex.next(); + return 0; } inset->read(buf, lex); diff --git a/src/paragraph_funcs.C b/src/paragraph_funcs.C index 91bca99358..2d2d61aa9a 100644 --- a/src/paragraph_funcs.C +++ b/src/paragraph_funcs.C @@ -865,7 +865,16 @@ int readParToken(Buffer & buf, Paragraph & par, LyXLex & lex, string const & tok << "Missing \\begin_inset?.\n"; } else if (token == "\\begin_inset") { InsetOld * inset = readInset(lex, buf); - par.insertInset(par.size(), inset, font, change); + if (inset) + par.insertInset(par.size(), inset, font, change); + else { + lex.eatLine(); + string line = lex.getString(); + buf.error(ErrorItem(_("Unknown Inset"), line, + buf.paragraphs().back().id(), + 0, par.size())); + return 1; + } } else if (token == "\\family") { lex.next(); font.setLyXFamily(lex.getString()); @@ -986,7 +995,8 @@ int readParToken(Buffer & buf, Paragraph & par, LyXLex & lex, string const & tok token, lex.getString()); buf.error(ErrorItem(_("Unknown token"), s, - par.id(), 0, par.size())); + buf.paragraphs().back().id(), + 0, par.size())); return 1; } return 0; -- 2.39.2