]> git.lyx.org Git - lyx.git/blobdiff - src/Compare.cpp
Fix for bug #7360. Patch from Nemah, posted to bug report.
[lyx.git] / src / Compare.cpp
index 92c5cf20bb97e91b69de664d51c42137528d1ef0..f5d1d5476110fd8fe2594b30a793e50528907a88 100644 (file)
@@ -14,6 +14,7 @@
 
 #include "BufferParams.h"
 #include "Changes.h"
+#include "Font.h"
 
 #include "insets/InsetText.h"
 
@@ -525,6 +526,7 @@ void Compare::Impl::furthestDpathKdiagonal(int D, int k,
        // Where do we take the step from ?
        int const kk = vertical_step ? k + 1 : k - 1;
        DocPair p(op[kk], np[kk]);
+       DocPair const s(os[kk], ns[kk]);
 
        // If D==0 we simulate a vertical step from (0,-1) by doing nothing.
        if (D != 0) {
@@ -546,8 +548,8 @@ void Compare::Impl::furthestDpathKdiagonal(int D, int k,
                ns[k] = p.n;
        } else {
                // Copy last snake from the previous step
-               os[k] = os[kk];
-               ns[k] = ns[kk];
+               os[k] = s.o;
+               ns[k] = s.n;
        }
 
        //Record new position
@@ -690,7 +692,9 @@ bool Compare::Impl::diff(Buffer const * new_buf, Buffer const * old_buf,
        processSnake(snake);
        
        // Start the recursive algorithm
-       diff_i(rp);
+       DocRangePair rp_new(from, rp.to());
+       if (!rp_new.o.empty() || !rp_new.n.empty())
+               diff_i(rp_new);
 
        for (pit_type p = 0; p < (pit_type)dest_pars_->size(); ++p) {
                (*dest_pars_)[p].setBuffer(const_cast<Buffer &>(*dest_buf));