From d10a578096e235855238721c856aa7d7112e12d1 Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sun, 12 Oct 2008 00:11:22 +0000 Subject: * Fixed two major unhandled exceptions discovered during the Pub Quiz on friday. --- .../Avatar/InstantMessage/InstantMessageModule.cs | 35 ++++++++++++++++++---- OpenSim/Region/Environment/Scenes/ScenePresence.cs | 10 ++++++- 2 files changed, 39 insertions(+), 6 deletions(-) (limited to 'OpenSim/Region') diff --git a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs index 6b2de80..9312fd8 100644 --- a/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs +++ b/OpenSim/Region/Environment/Modules/Avatar/InstantMessage/InstantMessageModule.cs @@ -274,14 +274,30 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage message = (string)requestData["message"]; // Bytes don't transfer well over XMLRPC, so, we Base64 Encode them. - byte[] dialogdata = Convert.FromBase64String((string)requestData["dialog"]); - dialog = dialogdata[0]; + string requestData1 = (string)requestData["dialog"]; + if (string.IsNullOrEmpty(requestData1)) + { + dialog = 0; + } + else + { + byte[] dialogdata = Convert.FromBase64String(requestData1); + dialog = dialogdata[0]; + } if ((string)requestData["from_group"] == "TRUE") fromGroup = true; - byte[] offlinedata = Convert.FromBase64String((string)requestData["offline"]); - offline = offlinedata[0]; + string requestData2 = (string)requestData["offline"]; + if (String.IsNullOrEmpty(requestData2)) + { + offline = 0; + } + else + { + byte[] offlinedata = Convert.FromBase64String(requestData2); + offline = offlinedata[0]; + } # region ParentEstateID try @@ -346,7 +362,16 @@ namespace OpenSim.Region.Environment.Modules.Avatar.InstantMessage # endregion Position = new Vector3(pos_x, pos_y, pos_z); - binaryBucket = Convert.FromBase64String((string)requestData["binary_bucket"]); + + string requestData3 = (string)requestData["binary_bucket"]; + if (string.IsNullOrEmpty(requestData3)) + { + binaryBucket = new byte[0]; + } + else + { + binaryBucket = Convert.FromBase64String(requestData3); + } // Create a New GridInstantMessageObject the the data GridInstantMessage gim = new GridInstantMessage(); diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index ab2abed..1d122d2 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs @@ -245,7 +245,15 @@ namespace OpenSim.Region.Environment.Scenes public Vector3 Lookat { - get { return Util.GetNormalizedVector(new Vector3(m_CameraAtAxis.X, m_CameraAtAxis.Y, 0)); } + get + { + Vector3 a = new Vector3(m_CameraAtAxis.X, m_CameraAtAxis.Y, 0); + + if(a == Vector3.Zero) + return a; + + return Util.GetNormalizedVector(a); + } } private readonly string m_firstname; -- cgit v1.1