From e41e52e09727842d990a31e2a5f7f3e9c88fe8b3 Mon Sep 17 00:00:00 2001 From: Oren Hurvitz Date: Sun, 1 Jun 2014 17:39:11 +0300 Subject: Close streams immediately when we finish using them --- OpenSim/Region/Framework/Scenes/KeyframeMotion.cs | 46 ++++++++++++----------- 1 file changed, 25 insertions(+), 21 deletions(-) (limited to 'OpenSim/Region/Framework/Scenes/KeyframeMotion.cs') diff --git a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs index 2d489ea..b4a171f 100644 --- a/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs +++ b/OpenSim/Region/Framework/Scenes/KeyframeMotion.cs @@ -280,7 +280,7 @@ namespace OpenSim.Region.Framework.Scenes if (!m_selected) { StopTimer(); - m_serializedPosition = m_group.AbsolutePosition; + m_serializedPosition = m_group.AbsolutePosition; } } } @@ -308,10 +308,11 @@ namespace OpenSim.Region.Framework.Scenes try { - MemoryStream ms = new MemoryStream(data); - BinaryFormatter fmt = new BinaryFormatter(); - - newMotion = (KeyframeMotion)fmt.Deserialize(ms); + using (MemoryStream ms = new MemoryStream(data)) + { + BinaryFormatter fmt = new BinaryFormatter(); + newMotion = (KeyframeMotion)fmt.Deserialize(ms); + } newMotion.m_group = grp; @@ -345,26 +346,26 @@ namespace OpenSim.Region.Framework.Scenes return; m_group = grp; - m_scene = grp.Scene; + m_scene = grp.Scene; Vector3 grppos = grp.AbsolutePosition; - Vector3 offset = grppos - m_serializedPosition; + Vector3 offset = grppos - m_serializedPosition; // avoid doing it more than once // current this will happen dragging a prim to other region m_serializedPosition = grppos; m_basePosition += offset; m_nextPosition += offset; - + m_currentFrame.StartPosition += offset; - m_currentFrame.Position += offset; + m_currentFrame.Position += offset; for (int i = 0; i < m_frames.Count; i++) { Keyframe k = m_frames[i]; k.StartPosition += offset; k.Position += offset; - m_frames[i]=k; + m_frames[i]=k; } if (m_running) @@ -527,7 +528,7 @@ namespace OpenSim.Region.Framework.Scenes { k.Position = pos; // k.Velocity = Vector3.Zero; - } + } k.StartRotation = rot; if (k.Rotation.HasValue) @@ -764,19 +765,22 @@ namespace OpenSim.Region.Framework.Scenes public Byte[] Serialize() { StopTimer(); - MemoryStream ms = new MemoryStream(); - BinaryFormatter fmt = new BinaryFormatter(); SceneObjectGroup tmp = m_group; - m_group = null; - if (!m_selected && tmp != null) - m_serializedPosition = tmp.AbsolutePosition; - fmt.Serialize(ms, this); - m_group = tmp; - if (m_running && !m_waitingCrossing) - StartTimer(); + m_group = null; + if (!m_selected && tmp != null) + m_serializedPosition = tmp.AbsolutePosition; + + using (MemoryStream ms = new MemoryStream()) + { + BinaryFormatter fmt = new BinaryFormatter(); + fmt.Serialize(ms, this); + m_group = tmp; + if (m_running && !m_waitingCrossing) + StartTimer(); - return ms.ToArray(); + return ms.ToArray(); + } } public void StartCrossingCheck() -- cgit v1.1