aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
authormeta72010-08-09 23:35:40 -0700
committermeta72010-08-09 23:35:40 -0700
commiteb5c508f8b396ea65d5d80c763aaea70a46c4653 (patch)
tree7b7e8a8ca27a134565785fe8d72c0686f9933895
parentFor my own sanity, fix a bug in xengine (diff)
downloadopensim-SC-eb5c508f8b396ea65d5d80c763aaea70a46c4653.zip
opensim-SC-eb5c508f8b396ea65d5d80c763aaea70a46c4653.tar.gz
opensim-SC-eb5c508f8b396ea65d5d80c763aaea70a46c4653.tar.bz2
opensim-SC-eb5c508f8b396ea65d5d80c763aaea70a46c4653.tar.xz
Add a DebuggerSafe option to the ini to help with debugging in visual studio. This essentially silences exceptions in the script engine. Disabled by default, naturally.
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs8
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs11
2 files changed, 16 insertions, 3 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 68b645e..71d63bb 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -100,6 +100,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
100 protected int m_notecardLineReadCharsMax = 255; 100 protected int m_notecardLineReadCharsMax = 255;
101 protected int m_scriptConsoleChannel = 0; 101 protected int m_scriptConsoleChannel = 0;
102 protected bool m_scriptConsoleChannelEnabled = false; 102 protected bool m_scriptConsoleChannelEnabled = false;
103 protected bool m_debuggerSafe = false;
103 protected IUrlModule m_UrlModule = null; 104 protected IUrlModule m_UrlModule = null;
104 protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache = 105 protected Dictionary<UUID, UserInfoCacheEntry> m_userInfoCache =
105 new Dictionary<UUID, UserInfoCacheEntry>(); 106 new Dictionary<UUID, UserInfoCacheEntry>();
@@ -110,6 +111,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
110 m_host = host; 111 m_host = host;
111 m_localID = localID; 112 m_localID = localID;
112 m_itemID = itemID; 113 m_itemID = itemID;
114 m_debuggerSafe = m_ScriptEngine.Config.GetBoolean("DebuggerSafe", false);
113 115
114 m_ScriptDelayFactor = 116 m_ScriptDelayFactor =
115 m_ScriptEngine.Config.GetFloat("ScriptDelayFactor", 1.0f); 117 m_ScriptEngine.Config.GetFloat("ScriptDelayFactor", 1.0f);
@@ -3220,13 +3222,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
3220 return m_host.OwnerID.ToString(); 3222 return m_host.OwnerID.ToString();
3221 } 3223 }
3222 3224
3223 [DebuggerNonUserCode]
3224 public void llInstantMessage(string user, string message) 3225 public void llInstantMessage(string user, string message)
3225 { 3226 {
3226 UUID result; 3227 UUID result;
3227 if (!UUID.TryParse(user, out result)) 3228 if (!UUID.TryParse(user, out result))
3228 { 3229 {
3229 throw new Exception(String.Format("An invalid key of '{0} was passed to llInstantMessage", user)); 3230 if (!m_debuggerSafe)
3231 {
3232 throw new Exception(String.Format("An invalid key of '{0} was passed to llInstantMessage", user));
3233 }
3230 return; 3234 return;
3231 } 3235 }
3232 3236
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
index 80b021f..73e87b5 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
@@ -129,6 +129,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
129 internal ThreatLevel m_MaxThreatLevel = ThreatLevel.VeryLow; 129 internal ThreatLevel m_MaxThreatLevel = ThreatLevel.VeryLow;
130 internal float m_ScriptDelayFactor = 1.0f; 130 internal float m_ScriptDelayFactor = 1.0f;
131 internal float m_ScriptDistanceFactor = 1.0f; 131 internal float m_ScriptDistanceFactor = 1.0f;
132 internal bool m_debuggerSafe = false;
132 internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >(); 133 internal Dictionary<string, FunctionPerms > m_FunctionPerms = new Dictionary<string, FunctionPerms >();
133 134
134 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID) 135 public void Initialize(IScriptEngine ScriptEngine, SceneObjectPart host, uint localID, UUID itemID)
@@ -137,6 +138,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
137 m_host = host; 138 m_host = host;
138 m_localID = localID; 139 m_localID = localID;
139 m_itemID = itemID; 140 m_itemID = itemID;
141 m_debuggerSafe = m_ScriptEngine.Config.GetBoolean("DebuggerSafe", false);
140 142
141 if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false)) 143 if (m_ScriptEngine.Config.GetBoolean("AllowOSFunctions", false))
142 m_OSFunctionsEnabled = true; 144 m_OSFunctionsEnabled = true;
@@ -195,7 +197,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
195 197
196 internal void OSSLError(string msg) 198 internal void OSSLError(string msg)
197 { 199 {
198 throw new Exception("OSSL Runtime Error: " + msg); 200 if (m_debuggerSafe)
201 {
202 OSSLShoutError(msg);
203 }
204 else
205 {
206 throw new Exception("OSSL Runtime Error: " + msg);
207 }
199 } 208 }
200 209
201 private void InitLSL() 210 private void InitLSL()