diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine')
-rw-r--r-- | OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs | 22 | ||||
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs | 16 |
2 files changed, 31 insertions, 7 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs index 2306bce..f568dc5 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs | |||
@@ -196,13 +196,15 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
196 | SceneObjectPart part = | 196 | SceneObjectPart part = |
197 | lastScriptEngine.World.GetSceneObjectPart( | 197 | lastScriptEngine.World.GetSceneObjectPart( |
198 | lastLocalID); | 198 | lastLocalID); |
199 | |||
200 | if (part != null && part.ParentGroup != null) | 199 | if (part != null && part.ParentGroup != null) |
201 | lastScriptEngine.World.DeleteSceneObject( | 200 | lastScriptEngine.World.DeleteSceneObject( |
202 | part.ParentGroup); | 201 | part.ParentGroup); |
203 | } | 202 | } |
204 | catch (Exception) | 203 | catch (Exception e) |
205 | { | 204 | { |
205 | if (lastScriptEngine != null) | ||
206 | lastScriptEngine.Log.WarnFormat("[{0}]: Exception {1} thrown",ScriptEngineName,e.GetType().ToString()); | ||
207 | throw e; | ||
206 | } | 208 | } |
207 | } | 209 | } |
208 | } | 210 | } |
@@ -288,11 +290,21 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine | |||
288 | InExecution = false; | 290 | InExecution = false; |
289 | } | 291 | } |
290 | } | 292 | } |
293 | catch (SelfDeleteException sde) | ||
294 | { | ||
295 | // Make sure this exception isn't consumed here... we need it | ||
296 | throw sde; | ||
297 | } | ||
298 | catch (TargetInvocationException tie) | ||
299 | { | ||
300 | // Probably don't need to special case this one | ||
301 | throw tie; | ||
302 | } | ||
291 | catch (Exception e) | 303 | catch (Exception e) |
292 | { | 304 | { |
293 | InExecution = false; | 305 | InExecution = false; |
294 | string text = FormatException(e, QIS.LineMap); | 306 | string text = FormatException(e, QIS.LineMap); |
295 | 307 | ||
296 | // DISPLAY ERROR INWORLD | 308 | // DISPLAY ERROR INWORLD |
297 | 309 | ||
298 | // if (e.InnerException != null) | 310 | // if (e.InnerException != null) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs index aee03ef..5c1c57a 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/Executor.cs | |||
@@ -156,7 +156,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
156 | string EventName = state + "_event_" + FunctionName; | 156 | string EventName = state + "_event_" + FunctionName; |
157 | 157 | ||
158 | //#if DEBUG | 158 | //#if DEBUG |
159 | // Console.WriteLine("ScriptEngine: Script event function name: " + EventName); | 159 | //Console.WriteLine("ScriptEngine: Script event function name: " + EventName); |
160 | //#endif | 160 | //#endif |
161 | 161 | ||
162 | if (Events.ContainsKey(EventName) == false) | 162 | if (Events.ContainsKey(EventName) == false) |
@@ -191,7 +191,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | |||
191 | //Console.WriteLine("ScriptEngine: Executing function name: " + EventName); | 191 | //Console.WriteLine("ScriptEngine: Executing function name: " + EventName); |
192 | #endif | 192 | #endif |
193 | // Found | 193 | // Found |
194 | ev.Invoke(m_Script, args); | 194 | try |
195 | { | ||
196 | ev.Invoke(m_Script, args); | ||
197 | } | ||
198 | catch (TargetInvocationException tie) | ||
199 | { | ||
200 | // Grab the inner exception and rethrow it | ||
201 | throw tie.InnerException; | ||
202 | } | ||
203 | catch (Exception e) | ||
204 | { | ||
205 | throw e; | ||
206 | } | ||
195 | } | 207 | } |
196 | 208 | ||
197 | protected void initEventFlags() | 209 | protected void initEventFlags() |