diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs index 3bdbdfb..c8f6559 100644 --- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs +++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | |||
@@ -1359,9 +1359,23 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1359 | string xml = instance.GetXMLState(); | 1359 | string xml = instance.GetXMLState(); |
1360 | 1360 | ||
1361 | XmlDocument sdoc = new XmlDocument(); | 1361 | XmlDocument sdoc = new XmlDocument(); |
1362 | sdoc.LoadXml(xml); | 1362 | bool loadedState = true; |
1363 | XmlNodeList rootL = sdoc.GetElementsByTagName("ScriptState"); | 1363 | try |
1364 | XmlNode rootNode = rootL[0]; | 1364 | { |
1365 | sdoc.LoadXml(xml); | ||
1366 | } | ||
1367 | catch (System.Xml.XmlException e) | ||
1368 | { | ||
1369 | loadedState = false; | ||
1370 | } | ||
1371 | |||
1372 | XmlNodeList rootL = null; | ||
1373 | XmlNode rootNode = null; | ||
1374 | if (loadedState) | ||
1375 | { | ||
1376 | rootL = sdoc.GetElementsByTagName("ScriptState"); | ||
1377 | rootNode = rootL[0]; | ||
1378 | } | ||
1365 | 1379 | ||
1366 | // Create <State UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"> | 1380 | // Create <State UUID="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"> |
1367 | XmlDocument doc = new XmlDocument(); | 1381 | XmlDocument doc = new XmlDocument(); |
@@ -1377,8 +1391,18 @@ namespace OpenSim.Region.ScriptEngine.XEngine | |||
1377 | stateData.Attributes.Append(engineName); | 1391 | stateData.Attributes.Append(engineName); |
1378 | doc.AppendChild(stateData); | 1392 | doc.AppendChild(stateData); |
1379 | 1393 | ||
1394 | XmlNode xmlstate = null; | ||
1395 | |||
1380 | // Add <ScriptState>...</ScriptState> | 1396 | // Add <ScriptState>...</ScriptState> |
1381 | XmlNode xmlstate = doc.ImportNode(rootNode, true); | 1397 | if (loadedState) |
1398 | { | ||
1399 | xmlstate = doc.ImportNode(rootNode, true); | ||
1400 | } | ||
1401 | else | ||
1402 | { | ||
1403 | xmlstate = doc.CreateElement("", "ScriptState", ""); | ||
1404 | } | ||
1405 | |||
1382 | stateData.AppendChild(xmlstate); | 1406 | stateData.AppendChild(xmlstate); |
1383 | 1407 | ||
1384 | string assemName = instance.GetAssemblyName(); | 1408 | string assemName = instance.GetAssemblyName(); |