]> git.lyx.org Git - lyx.git/blobdiff - src/Compare.cpp
Allow MTag to take attributes.
[lyx.git] / src / Compare.cpp
index aabbed7e3cd6228f61f94f3639fa6dab928befb4..590303e519408a2a9393bad8157d41dba85fc915 100644 (file)
@@ -444,6 +444,13 @@ static bool equal(Inset const * i_o, Inset const * i_n)
 
 
 static bool equal(DocIterator & o, DocIterator & n) {
+       // Explicitly check for this, so we won't call
+       // Paragraph::getChar for the last pos.
+       bool const o_lastpos = o.pos() == o.lastpos();
+       bool const n_lastpos = n.pos() == n.lastpos();
+       if (o_lastpos || n_lastpos)
+               return o_lastpos && n_lastpos;
+
        Paragraph const & old_par = o.text()->getPar(o.pit());
        Paragraph const & new_par = n.text()->getPar(n.pit());
 
@@ -518,6 +525,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) {
@@ -539,8 +547,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