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 corrupt0.7-release
parent
6f1b351cf4
commit
f4b90b52db
|
@ -218,7 +218,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);
|
||||||
|
@ -356,14 +356,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1021,12 +1033,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue