This patch fix a code i ommited in a previos commit
674c10b068d27d5ebdb25458d31dd8a61b343eb6, also should be included in 3.4.1
From 0db0ac817dd9bcc30d6a60fec93ac58aafdee416 Mon Sep 17 00:00:00 2001
From: Rafael Dominguez <venccsra...@gmail.com>
Date: Wed, 18 May 2011 12:26:13 -0430
Subject: [PATCH 1/6] Fix wrong refactoring of CloneList.

Amending commit 674c10b068d27d5ebdb25458d31dd8a61b343eb6.
---
 svx/source/svdraw/clonelist.cxx |   24 ++++++++++++++++++++----
 1 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/svx/source/svdraw/clonelist.cxx b/svx/source/svdraw/clonelist.cxx
index a39bb2f..a14d469 100644
--- a/svx/source/svdraw/clonelist.cxx
+++ b/svx/source/svdraw/clonelist.cxx
@@ -85,6 +85,8 @@ SdrObject* CloneList::GetClone(sal_uInt32 nIndex) const
 
 void CloneList::CopyConnections() const
 {
+    sal_uInt32 cloneCount = maCloneList.size();
+
     for(sal_uInt32 a = 0; a < maOriginalList.size(); a++)
     {
         const SdrEdgeObj* pOriginalEdge = PTR_CAST(SdrEdgeObj, GetOriginal(a));
@@ -101,10 +103,17 @@ void CloneList::CopyConnections() const
                                                                  maOriginalList.end(),
                                                                  pOriginalNode1);
 
+                sal_uInt32 nPos = it - maOriginalList.begin();
+
                 if(it != maOriginalList.end())
                 {
-                    if(pOriginalEdge->GetConnectedNode(sal_True) != *it)
-                        pCloneEdge->ConnectToNode(sal_True, const_cast<SdrObject*>(*it));
+                    SdrObject *cObj = NULL;
+
+                    if (nPos < cloneCount)
+                        cObj = GetClone(nPos);
+
+                    if(pOriginalEdge->GetConnectedNode(sal_True) != cObj)
+                        pCloneEdge->ConnectToNode(sal_True, cObj);
                 }
             }
 
@@ -114,10 +123,17 @@ void CloneList::CopyConnections() const
                                                                  maOriginalList.end(),
                                                                  pOriginalNode2);
 
+                sal_uInt32 nPos = it - maOriginalList.begin();
+
                 if(it != maOriginalList.end())
                 {
-                    if(pOriginalEdge->GetConnectedNode(sal_True) != *it)
-                        pCloneEdge->ConnectToNode(sal_True, const_cast<SdrObject*>(*it));
+                    SdrObject *cObj = NULL;
+
+                    if (nPos < cloneCount)
+                        cObj = GetClone(nPos);
+
+                    if(pOriginalEdge->GetConnectedNode(sal_False) != cObj)
+                        pCloneEdge->ConnectToNode(sal_False, cObj);
                 }
             }
         }
-- 
1.7.3.4

_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to