diff options
author | Justin Clark-Casey (justincc) | 2010-06-29 18:54:31 +0100 |
---|---|---|
committer | Justin Clark-Casey (justincc) | 2010-06-29 21:03:58 +0100 |
commit | f4b90b52db1b00783b03d80858ccaa3ea6a4081b (patch) | |
tree | 318adddac29f0c64fae45680144d92b44a12a83c | |
parent | Revert "don't report the null uuid as a missing asset on saving oars/iars" (diff) | |
download | opensim-SC_OLD-f4b90b52db1b00783b03d80858ccaa3ea6a4081b.zip opensim-SC_OLD-f4b90b52db1b00783b03d80858ccaa3ea6a4081b.tar.gz opensim-SC_OLD-f4b90b52db1b00783b03d80858ccaa3ea6a4081b.tar.bz2 opensim-SC_OLD-f4b90b52db1b00783b03d80858ccaa3ea6a4081b.tar.xz |
stop exceptions in setting and getting state from propogating since they aren't fatal to operations
this will hopefully stop "save oar" from failing if a script asset is corrupt
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | 39 |
1 files changed, 31 insertions, 8 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs index 3a8f168..a6067ad 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPartInventory.cs | |||
@@ -218,7 +218,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
218 | foreach (IScriptModule e in engines) | 218 | foreach (IScriptModule e in engines) |
219 | { | 219 | { |
220 | if (e != null) | 220 | if (e != null) |
221 | { | 221 | { |
222 | ArrayList errors = e.GetScriptErrors(itemID); | 222 | ArrayList errors = e.GetScriptErrors(itemID); |
223 | foreach (Object line in errors) | 223 | foreach (Object line in errors) |
224 | ret.Add(line); | 224 | ret.Add(line); |
@@ -356,14 +356,26 @@ namespace OpenSim.Region.Framework.Scenes | |||
356 | 356 | ||
357 | m_part.ParentGroup.m_savedScriptState[oldID] = newDoc.OuterXml; | 357 | m_part.ParentGroup.m_savedScriptState[oldID] = newDoc.OuterXml; |
358 | } | 358 | } |
359 | |||
359 | foreach (IScriptModule e in engines) | 360 | foreach (IScriptModule e in engines) |
360 | { | 361 | { |
361 | if (e != null) | 362 | if (e != null) |
362 | { | 363 | { |
363 | if (e.SetXMLState(newID, m_part.ParentGroup.m_savedScriptState[oldID])) | 364 | // Stop an exception in setting saved state from propogating since this is not fatal. |
364 | break; | 365 | try |
366 | { | ||
367 | if (e.SetXMLState(newID, m_part.ParentGroup.m_savedScriptState[oldID])) | ||
368 | break; | ||
369 | } | ||
370 | catch (Exception ex) | ||
371 | { | ||
372 | m_log.WarnFormat( | ||
373 | "[PRIM INVENTORY]: Could not set script state for old key {0}, new key {1} in prim {2} {3}. Exception {4}{5}", | ||
374 | oldID, newID, m_part.Name, m_part.UUID, ex.Message, ex.StackTrace); | ||
375 | } | ||
365 | } | 376 | } |
366 | } | 377 | } |
378 | |||
367 | m_part.ParentGroup.m_savedScriptState.Remove(oldID); | 379 | m_part.ParentGroup.m_savedScriptState.Remove(oldID); |
368 | } | 380 | } |
369 | } | 381 | } |
@@ -1021,12 +1033,23 @@ namespace OpenSim.Region.Framework.Scenes | |||
1021 | { | 1033 | { |
1022 | if (e != null) | 1034 | if (e != null) |
1023 | { | 1035 | { |
1024 | string n = e.GetXMLState(item.ItemID); | 1036 | // Stop any exception from the script engine from propogating since setting state |
1025 | if (n != String.Empty) | 1037 | // isn't essential. |
1038 | try | ||
1039 | { | ||
1040 | string n = e.GetXMLState(item.ItemID); | ||
1041 | if (n != String.Empty) | ||
1042 | { | ||
1043 | if (!ret.ContainsKey(item.ItemID)) | ||
1044 | ret[item.ItemID] = n; | ||
1045 | break; | ||
1046 | } | ||
1047 | } | ||
1048 | catch (Exception ex) | ||
1026 | { | 1049 | { |
1027 | if (!ret.ContainsKey(item.ItemID)) | 1050 | m_log.WarnFormat( |
1028 | ret[item.ItemID] = n; | 1051 | "[PRIM INVENTORY]: Could not retrieve script state for item {0} {1} in prim {2} {3}. Exception {4}{5}", |
1029 | break; | 1052 | item.Name, item.ItemID, m_part.Name, m_part.UUID, ex.Message, ex.StackTrace); |
1030 | } | 1053 | } |
1031 | } | 1054 | } |
1032 | } | 1055 | } |