commit 9b0b45dc81e8f1bc5cf370f0a9a8f60b8d93f4e6
Author: Richard Heck <rgh...@lyx.org>
Date:   Sun Apr 2 20:59:23 2017 -0400

    Possible fix for bug #10295.
    
    As it was, the comparison buffer was sharing a DocumentClass with
    one of the compared buffers. I don't fully understand why this was
    causing a problem, since we use a shared_ptr. But this patch creates
    a new DocumentClass for the new buffer.
---
 src/Compare.cpp |   13 ++++++++++++-
 1 files changed, 12 insertions(+), 1 deletions(-)

diff --git a/src/Compare.cpp b/src/Compare.cpp
index b2f6439..fee5699 100644
--- a/src/Compare.cpp
+++ b/src/Compare.cpp
@@ -15,6 +15,8 @@
 #include "Author.h"
 #include "BufferParams.h"
 #include "Changes.h"
+#include "CutAndPaste.h"
+#include "ErrorList.h"
 #include "Font.h"
 
 #include "insets/InsetText.h"
@@ -382,7 +384,16 @@ void Compare::run()
        // Copy the buffer params to the destination buffer
        dest_buffer->params() = options_.settings_from_new
                ? new_buffer->params() : old_buffer->params();
-
+       
+       // We do not want to share the DocumentClass with the other Buffer
+       // See bug #10295
+       DocumentClassConstPtr olddc = dest_buffer->params().documentClassPtr();
+       dest_buffer->params().makeDocumentClass();
+       ErrorList el;
+       cap::switchBetweenClasses(
+                       olddc, dest_buffer->params().documentClassPtr(),
+                       static_cast<InsetText &>(dest_buffer->inset()), el);
+       
        // Copy extra authors to the destination buffer
        AuthorList const & extra_authors = options_.settings_from_new ?
                old_buffer->params().authors() : new_buffer->params().authors();

Reply via email to