From: Georg Baum Date: Thu, 9 Dec 2010 21:35:39 +0000 (+0000) Subject: fix another crash like bug #6303 X-Git-Tag: 2.0.0~1442 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=d0933f4bd9a39292f97175170b8f90fcbfb31415;p=features.git fix another crash like bug #6303 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@36796 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp index 2998eefbac..28e6fcf000 100644 --- a/src/frontends/qt4/GuiView.cpp +++ b/src/frontends/qt4/GuiView.cpp @@ -2475,6 +2475,7 @@ bool GuiView::closeBuffer(Buffer & buf) // so no need to do it here. This will ensure that the children end up // in the session file in the correct order. If we close the master // buffer, we can close or release the child buffers here too. + bool success = true; if (!closing_) { ListOfBuffers clist = buf.getChildren(); ListOfBuffers::const_iterator it = clist.begin(); @@ -2486,22 +2487,26 @@ bool GuiView::closeBuffer(Buffer & buf) Buffer * child_buf = *it; GuiWorkArea * child_wa = workArea(*child_buf); if (child_wa) { - if (!closeWorkArea(child_wa, true)) - return false; + if (!closeWorkArea(child_wa, true)) { + success = false; + break; + } } else theBufferList().releaseChild(&buf, child_buf); } } - // goto bookmark to update bookmark pit. - //FIXME: we should update only the bookmarks related to this buffer! - LYXERR(Debug::DEBUG, "GuiView::closeBuffer()"); - for (size_t i = 0; i < theSession().bookmarks().size(); ++i) - guiApp->gotoBookmark(i+1, false, false); - - if (saveBufferIfNeeded(buf, false)) { - buf.removeAutosaveFile(); - theBufferList().release(&buf); - return true; + if (success) { + // goto bookmark to update bookmark pit. + //FIXME: we should update only the bookmarks related to this buffer! + LYXERR(Debug::DEBUG, "GuiView::closeBuffer()"); + for (size_t i = 0; i < theSession().bookmarks().size(); ++i) + guiApp->gotoBookmark(i+1, false, false); + + if (saveBufferIfNeeded(buf, false)) { + buf.removeAutosaveFile(); + theBufferList().release(&buf); + return true; + } } // open all children again to avoid a crash (bug 6603) // FIXME updateMacros() does more than needed