sw/source/filter/ww1/fltshell.cxx |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

New commits:
commit 74fab32e6fa12aadd16dd679c5f5c0fe81d79e02
Author: Caolán McNamara <[email protected]>
Date:   Fri Oct 26 11:47:13 2012 +0100

    Resolves: fdo#50285 merging props unsafe with intermediate charstyle prop
    
    Its a nice idea to merge properties of the same type and value if one starts
    and the same place the last one ended. But character styles are properties 
as
    well, so if we have character-style+superscript on range a, and
    character-style+superscript on range b and merge these so that we end up 
as...
    
    character-style on range a, superscript on range a+b, and character-style on
    range b then that clearly gives the wrong result if applied in that order.
    
    So its only safe to merge if there are no intermediate properties that can
    affect the merge candidates.
    
    A regression from b3cee382f449aa69213dc21f7b1ba6a5356d2865
    
    Change-Id: I541563d11265426736b840de068922eef8d45573
    (cherry picked from commit 08ffb7bc5ec4472126762f4cb9677349b61122f6)
    
    Signed-off-by: Michael Stahl <[email protected]>

diff --git a/sw/source/filter/ww1/fltshell.cxx 
b/sw/source/filter/ww1/fltshell.cxx
index deebd6d..41c6336 100644
--- a/sw/source/filter/ww1/fltshell.cxx
+++ b/sw/source/filter/ww1/fltshell.cxx
@@ -325,6 +325,8 @@ SwFltStackEntry* SwFltControlStack::SetAttr(const 
SwPosition& rPos,
     myEIter aI = maEntries.begin();
     while (aI != maEntries.end())
     {
+        bool bLastEntry = aI == maEntries.end() - 1;
+
         SwFltStackEntry& rEntry = *aI;
         if (rEntry.bOpen)
         {
@@ -350,7 +352,7 @@ SwFltStackEntry* SwFltControlStack::SetAttr(const 
SwPosition& rPos,
             {
                 rEntry.bConsumedByField = consumedByField;
                 rEntry.SetEndPos(rPos);
-                if (nAttrId == rEntry.pAttr->Which())
+                if (bLastEntry && nAttrId == rEntry.pAttr->Which())
                 {
                     //potential candidate for merging with an identical
                     //property beginning at rPos
@@ -377,7 +379,7 @@ SwFltStackEntry* SwFltControlStack::SetAttr(const 
SwPosition& rPos,
             //we advance to the next node, or finish processing the document
             if (rEntry.m_aPtPos.m_nNode.GetIndex() == 
aFltPos.m_nNode.GetIndex())
             {
-                if (nAttrId == rEntry.pAttr->Which() &&
+                if (bLastEntry && nAttrId == rEntry.pAttr->Which() &&
                     rEntry.m_aPtPos.m_nCntnt == aFltPos.m_nCntnt)
                 {
                     //potential candidate for merging with an identical
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to