aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs5
-rw-r--r--OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs29
2 files changed, 29 insertions, 5 deletions
diff --git a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
index b5272ad..c34a0ec 100644
--- a/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
+++ b/OpenSim/Region/CoreModules/Avatar/Inventory/Archiver/InventoryArchiveWriteRequest.cs
@@ -157,7 +157,10 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
157 string serialization = UserInventoryItemSerializer.Serialize(inventoryItem, options, userAccountService); 157 string serialization = UserInventoryItemSerializer.Serialize(inventoryItem, options, userAccountService);
158 m_archiveWriter.WriteFile(filename, serialization); 158 m_archiveWriter.WriteFile(filename, serialization);
159 159
160 if (SaveAssets) 160 AssetType itemAssetType = (AssetType)inventoryItem.AssetType;
161
162 // Don't chase down link asset items as they actually point to their target item IDs rather than an asset
163 if (SaveAssets && itemAssetType != AssetType.Link && itemAssetType != AssetType.LinkFolder)
161 m_assetGatherer.GatherAssetUuids(inventoryItem.AssetID, (AssetType)inventoryItem.AssetType, m_assetUuids); 164 m_assetGatherer.GatherAssetUuids(inventoryItem.AssetID, (AssetType)inventoryItem.AssetType, m_assetUuids);
162 } 165 }
163 166
diff --git a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
index 872816c..47af0dd 100644
--- a/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
+++ b/OpenSim/Region/Framework/Scenes/Serialization/SceneObjectSerializer.cs
@@ -570,7 +570,13 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
570 570
571 private static void ProcessShape(SceneObjectPart obj, XmlTextReader reader) 571 private static void ProcessShape(SceneObjectPart obj, XmlTextReader reader)
572 { 572 {
573 obj.Shape = ReadShape(reader, "Shape"); 573 bool errors = false;
574 obj.Shape = ReadShape(reader, "Shape", out errors);
575
576 if (errors)
577 m_log.DebugFormat(
578 "[SceneObjectSerializer]: Parsing PrimitiveBaseShape for object part {0} {1} encountered errors. Please see earlier log entries.",
579 obj.Name, obj.UUID);
574 } 580 }
575 581
576 private static void ProcessScale(SceneObjectPart obj, XmlTextReader reader) 582 private static void ProcessScale(SceneObjectPart obj, XmlTextReader reader)
@@ -1470,7 +1476,9 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1470 } 1476 }
1471 catch (Exception e) 1477 catch (Exception e)
1472 { 1478 {
1473 m_log.DebugFormat("[SceneObjectSerializer]: exception while parsing {0}: {1}", nodeName, e); 1479 m_log.DebugFormat(
1480 "[SceneObjectSerializer]: exception while parsing {0} in object {1} {2}: {3}{4}",
1481 obj.Name, obj.UUID, nodeName, e.Message, e.StackTrace);
1474 if (reader.NodeType == XmlNodeType.EndElement) 1482 if (reader.NodeType == XmlNodeType.EndElement)
1475 reader.Read(); 1483 reader.Read();
1476 } 1484 }
@@ -1528,8 +1536,17 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1528 return tinv; 1536 return tinv;
1529 } 1537 }
1530 1538
1531 static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name) 1539 /// <summary>
1540 /// Read a shape from xml input
1541 /// </summary>
1542 /// <param name="reader"></param>
1543 /// <param name="name">The name of the xml element containing the shape</param>
1544 /// <param name="errors">true if any errors were encountered during parsing, false otherwise</param>
1545 /// <returns>The shape parsed</returns>
1546 static PrimitiveBaseShape ReadShape(XmlTextReader reader, string name, out bool errors)
1532 { 1547 {
1548 errors = false;
1549
1533 PrimitiveBaseShape shape = new PrimitiveBaseShape(); 1550 PrimitiveBaseShape shape = new PrimitiveBaseShape();
1534 1551
1535 if (reader.IsEmptyElement) 1552 if (reader.IsEmptyElement)
@@ -1554,7 +1571,11 @@ namespace OpenSim.Region.Framework.Scenes.Serialization
1554 } 1571 }
1555 catch (Exception e) 1572 catch (Exception e)
1556 { 1573 {
1557 m_log.DebugFormat("[SceneObjectSerializer]: exception while parsing Shape {0}: {1}", nodeName, e); 1574 errors = true;
1575 m_log.DebugFormat(
1576 "[SceneObjectSerializer]: exception while parsing Shape property {0}: {1}{2}",
1577 nodeName, e.Message, e.StackTrace);
1578
1558 if (reader.NodeType == XmlNodeType.EndElement) 1579 if (reader.NodeType == XmlNodeType.EndElement)
1559 reader.Read(); 1580 reader.Read();
1560 } 1581 }