aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs
diff options
context:
space:
mode:
authorCharles Krinke2008-10-04 19:04:58 +0000
committerCharles Krinke2008-10-04 19:04:58 +0000
commit2fdb42aec03be76f8208d591009994aff7a5c2d8 (patch)
tree05ad8d869f42e5854b3c0782fcd4b68d62cfebab /OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs
parentRemove two warnings by assigning string provider = "" (diff)
downloadopensim-SC_OLD-2fdb42aec03be76f8208d591009994aff7a5c2d8.zip
opensim-SC_OLD-2fdb42aec03be76f8208d591009994aff7a5c2d8.tar.gz
opensim-SC_OLD-2fdb42aec03be76f8208d591009994aff7a5c2d8.tar.bz2
opensim-SC_OLD-2fdb42aec03be76f8208d591009994aff7a5c2d8.tar.xz
Mantis#2316. Thank you kindly, CMickeyb for a patch that:
Addresses llDie issues. The attached patch catches run time exceptions that occur during method invocation (of type TargetInvocationException) and exposes the internal exception. This makes it possible to pass out the SelfDeleteException. Also added handlers in a couple places to make sure that exception was being passed out far enough to be handled correctly. Tested on DNE.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/DotNetEngine/EventQueueThreadClass.cs22
1 files changed, 17 insertions, 5 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)