From 3c036934a3f017e1444dcc4a05e946076345f59d Mon Sep 17 00:00:00 2001
From: Melanie Thielker
Date: Sat, 12 Jun 2010 08:29:20 +0200
Subject: Preserving the link numbers is a serializer's highest duty. Prevent
 region crossings from screwing up complex attachments by preserving link
 numbers.

---
 .../Framework/Scenes/Serialization/SceneObjectSerializer.cs      | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index f7544ac..5bdaa17 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -221,7 +221,16 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
                     sr = new StringReader(parts[i].OuterXml);
                     reader = new XmlTextReader(sr);
                     SceneObjectPart part = SceneObjectPart.FromXml(reader);
+
+                    int originalLinkNum = part.LinkNum;
+
                     sceneObject.AddPart(part);
+
+                    // SceneObjectGroup.AddPart() tries to be smart and automatically set the LinkNum.
+                    // We override that here
+                    if (originalLinkNum != 0)
+                        part.LinkNum = originalLinkNum;
+
                     part.StoreUndoState();
                     reader.Close();
                     sr.Close();
-- 
cgit v1.1