From 3883cca61b87082e5efdf909e3e343790129f05a Mon Sep 17 00:00:00 2001 From: Richard Heck Date: Thu, 26 May 2011 14:16:52 +0000 Subject: [PATCH] Fix bug reported on user list. Children included more than once in the same document could not be rendered. Problem was that we were using children_positions to deal with the included documents. That structure only includes each child once. We need to use position_to_children, instead. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38842 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/Buffer.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 355b865dcd..117cfe0ca7 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -449,12 +449,12 @@ void Buffer::clone(BufferMap & bufmap) const // math macro caches need to be rethought and simplified. // I am not sure wether we should handle Buffer cloning here or in BufferList. // Right now BufferList knows nothing about buffer clones. - Impl::BufferPositionMap::iterator it = d->children_positions.begin(); - Impl::BufferPositionMap::iterator end = d->children_positions.end(); + Impl::PositionScopeBufferMap::iterator it = d->position_to_children.begin(); + Impl::PositionScopeBufferMap::iterator end = d->position_to_children.end(); for (; it != end; ++it) { - DocIterator dit = it->second.clone(buffer_clone); + DocIterator dit = it->first.clone(buffer_clone); dit.setBuffer(buffer_clone); - Buffer * child = const_cast(it->first); + Buffer * child = const_cast(it->second.second); child->clone(bufmap); BufferMap::iterator const bit = bufmap.find(child); @@ -466,6 +466,7 @@ void Buffer::clone(BufferMap & bufmap) const InsetInclude * inset_inc = static_cast(inset); inset_inc->setChildBuffer(child_clone); child_clone->d->setParent(buffer_clone); + // FIXME Do we need to do this now, or can we wait until we run updateMacros()? buffer_clone->setChild(dit, child_clone); } buffer_clone->d->macro_lock = false; -- 2.39.2