mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-27 19:59:46 +00:00
Fix crash when closing master with children and grandchildren
In some cases, it is possible that the BufferPositionMap has
dangling pointers. We thus check whether the Buffer is loaded
before accessing it.
Fixes: #10766
(cherry picked from commit 4f50cbcfe4
)
This commit is contained in:
parent
1d55d8cd25
commit
7b41d977ad
@ -3583,8 +3583,12 @@ void Buffer::listMacroNames(MacroNameSet & macros) const
|
|||||||
// loop over children
|
// loop over children
|
||||||
Impl::BufferPositionMap::iterator it = d->children_positions.begin();
|
Impl::BufferPositionMap::iterator it = d->children_positions.begin();
|
||||||
Impl::BufferPositionMap::iterator end = d->children_positions.end();
|
Impl::BufferPositionMap::iterator end = d->children_positions.end();
|
||||||
for (; it != end; ++it)
|
for (; it != end; ++it) {
|
||||||
it->first->listMacroNames(macros);
|
Buffer * child = const_cast<Buffer *>(it->first);
|
||||||
|
// The buffer might have been closed (see #10766).
|
||||||
|
if (theBufferList().isLoaded(child))
|
||||||
|
child->listMacroNames(macros);
|
||||||
|
}
|
||||||
|
|
||||||
// call parent
|
// call parent
|
||||||
Buffer const * const pbuf = d->parent();
|
Buffer const * const pbuf = d->parent();
|
||||||
|
@ -78,6 +78,9 @@ What's new
|
|||||||
- Fix crash when closing master document with dirty child while Document
|
- Fix crash when closing master document with dirty child while Document
|
||||||
Settings dialog is open (bug 9979).
|
Settings dialog is open (bug 9979).
|
||||||
|
|
||||||
|
- Fix crash when closing master with children and grandchildren
|
||||||
|
(bug 10766).
|
||||||
|
|
||||||
- Fix random crash when dissolving inset (bug 10667).
|
- Fix random crash when dissolving inset (bug 10667).
|
||||||
|
|
||||||
- Fix potential crash when cursor enters an inset (bug 10691).
|
- Fix potential crash when cursor enters an inset (bug 10691).
|
||||||
|
Loading…
Reference in New Issue
Block a user