aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ScriptEngine/XEngine/XEngine.cs')
-rw-r--r--OpenSim/Region/ScriptEngine/XEngine/XEngine.cs37
1 files changed, 33 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 30e127d..bbaf923 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -556,6 +556,11 @@ namespace OpenSim.Region.ScriptEngine.XEngine
556 556
557 if (stateSource == (int)StateSource.ScriptedRez) 557 if (stateSource == (int)StateSource.ScriptedRez)
558 { 558 {
559 lock (m_CompileDict)
560 {
561 m_CompileDict[itemID] = 0;
562 }
563
559 DoOnRezScript(parms); 564 DoOnRezScript(parms);
560 } 565 }
561 else 566 else
@@ -1356,9 +1361,23 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1356 string xml = instance.GetXMLState(); 1361 string xml = instance.GetXMLState();
1357 1362
1358 XmlDocument sdoc = new XmlDocument(); 1363 XmlDocument sdoc = new XmlDocument();
1359 sdoc.LoadXml(xml); 1364 bool loadedState = true;
1360 XmlNodeList rootL = sdoc.GetElementsByTagName("ScriptState"); 1365 try
1361 XmlNode rootNode = rootL[0]; 1366 {
1367 sdoc.LoadXml(xml);
1368 }
1369 catch (System.Xml.XmlException e)
1370 {
1371 loadedState = false;
1372 }
1373
1374 XmlNodeList rootL = null;
1375 XmlNode rootNode = null;
1376 if (loadedState)
1377 {
1378 rootL = sdoc.GetElementsByTagName("ScriptState");
1379 rootNode = rootL[0];
1380 }
1362 1381
1363 // Create <State UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"> 1382 // Create <State UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx">
1364 XmlDocument doc = new XmlDocument(); 1383 XmlDocument doc = new XmlDocument();
@@ -1374,8 +1393,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine
1374 stateData.Attributes.Append(engineName); 1393 stateData.Attributes.Append(engineName);
1375 doc.AppendChild(stateData); 1394 doc.AppendChild(stateData);
1376 1395
1396 XmlNode xmlstate = null;
1397
1377 // Add <ScriptState>...</ScriptState> 1398 // Add <ScriptState>...</ScriptState>
1378 XmlNode xmlstate = doc.ImportNode(rootNode, true); 1399 if (loadedState)
1400 {
1401 xmlstate = doc.ImportNode(rootNode, true);
1402 }
1403 else
1404 {
1405 xmlstate = doc.CreateElement("", "ScriptState", "");
1406 }
1407
1379 stateData.AppendChild(xmlstate); 1408 stateData.AppendChild(xmlstate);
1380 1409
1381 string assemName = instance.GetAssemblyName(); 1410 string assemName = instance.GetAssemblyName();