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
0.6.9-post-fixes
Justin Clark-Casey (justincc) 2010-06-29 18:54:31 +01:00
parent 85c20e1493
commit ae24548216
1 changed files with 31 additions and 8 deletions

View File

@ -217,7 +217,7 @@ namespace OpenSim.Region.Framework.Scenes
foreach (IScriptModule e in engines) foreach (IScriptModule e in engines)
{ {
if (e != null) if (e != null)
{ {
ArrayList errors = e.GetScriptErrors(itemID); ArrayList errors = e.GetScriptErrors(itemID);
foreach (Object line in errors) foreach (Object line in errors)
ret.Add(line); ret.Add(line);
@ -359,14 +359,26 @@ namespace OpenSim.Region.Framework.Scenes
m_part.ParentGroup.m_savedScriptState[oldID] = newDoc.OuterXml; m_part.ParentGroup.m_savedScriptState[oldID] = newDoc.OuterXml;
} }
foreach (IScriptModule e in engines) foreach (IScriptModule e in engines)
{ {
if (e != null) if (e != null)
{ {
if (e.SetXMLState(newID, m_part.ParentGroup.m_savedScriptState[oldID])) // Stop an exception in setting saved state from propogating since this is not fatal.
break; try
{
if (e.SetXMLState(newID, m_part.ParentGroup.m_savedScriptState[oldID]))
break;
}
catch (Exception ex)
{
m_log.WarnFormat(
"[PRIM INVENTORY]: Could not set script state for old key {0}, new key {1} in prim {2} {3}. Exception {4}{5}",
oldID, newID, m_part.Name, m_part.UUID, ex.Message, ex.StackTrace);
}
} }
} }
m_part.ParentGroup.m_savedScriptState.Remove(oldID); m_part.ParentGroup.m_savedScriptState.Remove(oldID);
} }
} }
@ -1028,12 +1040,23 @@ namespace OpenSim.Region.Framework.Scenes
{ {
if (e != null) if (e != null)
{ {
string n = e.GetXMLState(item.ItemID); // Stop any exception from the script engine from propogating since setting state
if (n != String.Empty) // isn't essential.
try
{ {
if (!ret.ContainsKey(item.ItemID)) string n = e.GetXMLState(item.ItemID);
ret[item.ItemID] = n; if (n != String.Empty)
break; {
if (!ret.ContainsKey(item.ItemID))
ret[item.ItemID] = n;
break;
}
}
catch (Exception ex)
{
m_log.WarnFormat(
"[PRIM INVENTORY]: Could not retrieve script state for item {0} {1} in prim {2} {3}. Exception {4}{5}",
item.Name, item.ItemID, m_part.Name, m_part.UUID, ex.Message, ex.StackTrace);
} }
} }
} }