summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRafael Dominguez <venccsralph@gmail.com>2011-05-26 22:37:28 -0700
committerPetr Mladek <pmladek@suse.cz>2011-06-06 20:38:54 +0200
commit48c400e4fb0778bde199ca771f1ee2586c55a0ff (patch)
treef3f22f881d2387490eea732f8822d7b3370268f9
parentab6eb1094675c7e7eb044a50a99f3771a95ea6fa (diff)
Fix bug in CloneList
Signed-off-by: Petr Mladek <pmladek@suse.cz>
-rw-r--r--svx/source/svdraw/clonelist.cxx24
1 files changed, 20 insertions, 4 deletions
diff --git a/svx/source/svdraw/clonelist.cxx b/svx/source/svdraw/clonelist.cxx
index a39bb2f1f3..a14d469d00 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);
}
}
}