From: Christopher Yeoh <cyeoh@au1.ibm.com>

Attached is a patch which fixes mantis bug 2645 where scripts in child
prims
freeze after being unlinked from the root prim. This got introduced
some time after the 0.6 freeze. Have checked test suites
pass even after nant clean  ;-)

http://opensimulator.org/mantis/bug_update_page.php?bug_id=2645

Also removes a redundant ResetIDs call

Regards,

Chris
0.6.1-post-fixes
Sean Dague 2008-11-20 00:13:15 +00:00
parent b0ee8fc271
commit e6f92044ca
3 changed files with 9 additions and 6 deletions

View File

@ -1669,7 +1669,6 @@ namespace OpenSim.Region.Environment.Scenes
{
SceneObjectGroup copy = originPrim.Copy(AgentID, GroupID, true);
copy.AbsolutePosition = copy.AbsolutePosition + offset;
copy.ResetIDs();
lock (Entities)
{

View File

@ -591,17 +591,19 @@ namespace OpenSim.Region.Environment.Scenes
{
m_scene = scene;
RegionHandle = m_scene.RegionInfo.RegionHandle;
m_rootPart.ParentID = 0;
m_rootPart.LocalId = m_scene.AllocateLocalId();
if (m_rootPart.LocalId==0)
m_rootPart.LocalId = m_scene.AllocateLocalId();
// No need to lock here since the object isn't yet in a scene
foreach (SceneObjectPart part in m_parts.Values)
{
if (Object.ReferenceEquals(part, m_rootPart))
continue;
part.LocalId = m_scene.AllocateLocalId();
if (part.LocalId==0)
part.LocalId = m_scene.AllocateLocalId();
part.ParentID = m_rootPart.LocalId;
//m_log.DebugFormat("[SCENE]: Given local id {0} to part {1}, linknum {2}, parent {3} {4}", part.LocalId, part.UUID, part.LinkNum, part.ParentID, part.ParentUUID);
}

View File

@ -1223,7 +1223,6 @@ if (m_shape != null) {
if (userExposed)
dupe.UUID = UUID.Random();
dupe.LocalId = localID;
dupe._ownerID = AgentID;
dupe._groupID = GroupID;
dupe.GroupPosition = GroupPosition;
@ -1245,6 +1244,8 @@ if (m_shape != null) {
if (userExposed)
dupe.ResetIDs(linkNum);
// Move afterwards ResetIDs as it clears the localID
dupe.LocalId = localID;
// This may be wrong... it might have to be applied in SceneObjectGroup to the object that's being duplicated.
dupe._lastOwnerID = ObjectOwner;
@ -1927,6 +1928,7 @@ if (m_shape != null) {
{
UUID = UUID.Random();
LinkNum = linkNum;
LocalId = 0;
ResetInventoryIDs();
}