commit 9d4406268ceef604a93dfce8a956609c3d8896af
Author: Richard Heck <[email protected]>
Date: Tue Jan 5 09:53:42 2016 -0500
Fix bug #9907: We get a crash if we first close a master buffer one of
whose children is also a child of another buffer, then try to close that
one.
The problem is that we do not check properly to make sure that the child
is not a child of some other buffer. Now we do.
(cherry picked from commit 0407364392abca866ee5a3da3c89ad41811ed81f)
diff --git a/src/frontends/qt4/GuiView.cpp b/src/frontends/qt4/GuiView.cpp
index f6bd45d..a1d8e64 100644
--- a/src/frontends/qt4/GuiView.cpp
+++ b/src/frontends/qt4/GuiView.cpp
@@ -2663,23 +2663,31 @@ bool GuiView::closeBuffer(Buffer & buf)
ListOfBuffers::const_iterator it = clist.begin();
ListOfBuffers::const_iterator const bend = clist.end();
for (; it != bend; ++it) {
- // If a child is dirty, do not close
- // without user intervention
- //FIXME: should we look in other tabworkareas?
Buffer * child_buf = *it;
+ if (theBufferList().isOthersChild(&buf, child_buf)) {
+ child_buf->setParent(0);
+ continue;
+ }
+
+ // FIXME: should we look in other tabworkareas?
+ // ANSWER: I don't think so. I've tested, and if the
child is
+ // open in some other window, it closes without a
problem.
GuiWorkArea * child_wa = workArea(*child_buf);
if (child_wa) {
- if (!closeWorkArea(child_wa, true)) {
- success = false;
+ success = closeWorkArea(child_wa, true);
+ if (!success)
break;
- }
- } else
- theBufferList().releaseChild(&buf, child_buf);
+ } else {
+ // In this case the child buffer is open but
hidden.
+ // It therefore should not (MUST NOT) be dirty!
+ LATTEST(child_buf->isClean());
+ theBufferList().release(child_buf);
+ }
}
}
if (success) {
// goto bookmark to update bookmark pit.
- //FIXME: we should update only the bookmarks related to this
buffer!
+ // 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);
diff --git a/status.21x b/status.21x
index ab30ed3..221cdbf 100644
--- a/status.21x
+++ b/status.21x
@@ -56,6 +56,8 @@ What's new
- Improved example file for the moderncv document class.
+- Updated French translation of Linguistics manual.
+
* BUILD/INSTALLATION
@@ -85,6 +87,9 @@ What's new
- Fix crash when inserting a line in multline math environment (bug 9902).
+- Fix crash when closing buffer one of whose children is also a child of
+ other master (bug 9907).
+
- Fix automatic insertion of longtable captions (bug 9692).
- Fix setting of nested minipage via the dialog (bug 8716).