keep the reverted code, that does work. Our code likes to have pbs.Media == null when there is no MOAD defined, so handle possible odd oars that may have llsd <array /> on that case
parent
29f2421d4f
commit
ef2fd8fcea
|
@ -1580,10 +1580,14 @@ namespace OpenSim.Framework
|
|||
{
|
||||
MediaList ml = new MediaList();
|
||||
ml.ReadXml(rawXml);
|
||||
if(ml.Count == 0)
|
||||
return null;
|
||||
return ml;
|
||||
}
|
||||
|
||||
public void ReadXml(string rawXml)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (StringReader sr = new StringReader(rawXml))
|
||||
{
|
||||
|
@ -1598,18 +1602,27 @@ namespace OpenSim.Framework
|
|||
return;
|
||||
|
||||
xtr.ReadStartElement("OSMedia");
|
||||
OSD osdp = OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml());
|
||||
if(osdp == null || !(osdp is OSDArray))
|
||||
return;
|
||||
|
||||
OSDArray osdMeArray = osdp as OSDArray;
|
||||
if(osdMeArray.Count == 0)
|
||||
return;
|
||||
|
||||
OSDArray osdMeArray = (OSDArray)OSDParser.DeserializeLLSDXml(xtr.ReadInnerXml());
|
||||
foreach (OSD osdMe in osdMeArray)
|
||||
{
|
||||
MediaEntry me = (osdMe is OSDMap ? MediaEntry.FromOSD(osdMe) : new MediaEntry());
|
||||
Add(me);
|
||||
}
|
||||
|
||||
xtr.ReadEndElement();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_log.Debug("PrimitiveBaseShape] error decoding MOAP xml" );
|
||||
}
|
||||
}
|
||||
|
||||
public void ReadXml(XmlReader reader)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue