diff options
-rw-r--r-- | OpenSim/Framework/PrimitiveBaseShape.cs | 43 |
1 files changed, 28 insertions, 15 deletions
diff --git a/OpenSim/Framework/PrimitiveBaseShape.cs b/OpenSim/Framework/PrimitiveBaseShape.cs index a830551..96d78d3 100644 --- a/OpenSim/Framework/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/PrimitiveBaseShape.cs | |||
@@ -1580,35 +1580,48 @@ namespace OpenSim.Framework | |||
1580 | { | 1580 | { |
1581 | MediaList ml = new MediaList(); | 1581 | MediaList ml = new MediaList(); |
1582 | ml.ReadXml(rawXml); | 1582 | ml.ReadXml(rawXml); |
1583 | if(ml.Count == 0) | ||
1584 | return null; | ||
1583 | return ml; | 1585 | return ml; |
1584 | } | 1586 | } |
1585 | 1587 | ||
1586 | public void ReadXml(string rawXml) | 1588 | public void ReadXml(string rawXml) |
1587 | { | 1589 | { |
1588 | using (StringReader sr = new StringReader(rawXml)) | 1590 | try |
1589 | { | 1591 | { |
1590 | using (XmlTextReader xtr = new XmlTextReader(sr)) | 1592 | using (StringReader sr = new StringReader(rawXml)) |
1591 | { | 1593 | { |
1592 | xtr.MoveToContent(); | 1594 | using (XmlTextReader xtr = new XmlTextReader(sr)) |
1595 | { | ||
1596 | xtr.MoveToContent(); | ||
1593 | 1597 | ||
1594 | string type = xtr.GetAttribute("type"); | 1598 | string type = xtr.GetAttribute("type"); |
1595 | //m_log.DebugFormat("[MOAP]: Loaded media texture entry with type {0}", type); | 1599 | //m_log.DebugFormat("[MOAP]: Loaded media texture entry with type {0}", type); |
1596 | 1600 | ||
1597 | if (type != MEDIA_TEXTURE_TYPE) | 1601 | if (type != MEDIA_TEXTURE_TYPE) |
1598 | return; | 1602 | return; |
1599 | 1603 | ||
1600 | xtr.ReadStartElement("OSMedia"); | 1604 | xtr.ReadStartElement("OSMedia"); |
1605 | OSD osdp = OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml()); | ||
1606 | if(osdp == null || !(osdp is OSDArray)) | ||
1607 | return; | ||
1601 | 1608 | ||
1602 | OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml()); | 1609 | OSDArray osdMeArray = osdp as OSDArray; |
1603 | foreach (OSD osdMe in osdMeArray) | 1610 | if(osdMeArray.Count == 0) |
1604 | { | 1611 | return; |
1605 | MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); | ||
1606 | Add(me); | ||
1607 | } | ||
1608 | 1612 | ||
1609 | xtr.ReadEndElement(); | 1613 | foreach (OSD osdMe in osdMeArray) |
1614 | { | ||
1615 | MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry()); | ||
1616 | Add(me); | ||
1617 | } | ||
1618 | } | ||
1610 | } | 1619 | } |
1611 | } | 1620 | } |
1621 | catch | ||
1622 | { | ||
1623 | m_log.Debug("PrimitiveBaseShape] error decoding MOAP xml" ); | ||
1624 | } | ||
1612 | } | 1625 | } |
1613 | 1626 | ||
1614 | public void ReadXml(XmlReader reader) | 1627 | public void ReadXml(XmlReader reader) |