diff options
author | meta7 | 2010-08-09 23:35:40 -0700 |
---|---|---|
committer | meta7 | 2010-08-09 23:35:40 -0700 |
commit | eb5c508f8b396ea65d5d80c763aaea70a46c4653 (patch) | |
tree | 7b7e8a8ca27a134565785fe8d72c0686f9933895 /OpenSim/Region/ScriptEngine/Shared/Api | |
parent | For my own sanity, fix a bug in xengine (diff) | |
download | opensim-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.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | 8 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs | 11 |
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() |