.net xml things don't like null terminated strings
							parent
							
								
									9ecee558b5
								
							
						
					
					
						commit
						e308ab8843
					
				|  | @ -193,8 +193,13 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
|             coa = null; | ||||
|             try | ||||
|             { | ||||
|                 int len = data.Length; | ||||
|                 if (len < 32) | ||||
|                     return false; | ||||
|                 if (data[len - 1] == 0) | ||||
|                     --len; | ||||
|                 // Quickly check if this is a coalesced object, without fully parsing the XML | ||||
|                 using (MemoryStream ms = new MemoryStream(data)) | ||||
|                 using (MemoryStream ms = new MemoryStream(data, 0, len, false)) | ||||
|                 { | ||||
|                     using (XmlTextReader reader = new XmlTextReader(ms)) | ||||
|                     { | ||||
|  |  | |||
|  | @ -63,7 +63,7 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
|             String fixedData = ExternalRepresentationUtils.SanitizeXml(xmlData); | ||||
|             using (XmlTextReader wrappedReader = new XmlTextReader(fixedData, XmlNodeType.Element, null)) | ||||
|             { | ||||
|                 using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment})) | ||||
|                 using (XmlReader reader = XmlReader.Create(wrappedReader, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment })) | ||||
|                 { | ||||
|                     try | ||||
|                     { | ||||
|  | @ -79,6 +79,31 @@ namespace OpenSim.Region.Framework.Scenes.Serialization | |||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public static SceneObjectGroup FromOriginalXmlData(byte[] data) | ||||
|         { | ||||
|             int len = data.Length; | ||||
|             if(len < 32) | ||||
|                 return null; | ||||
|             if(data[len -1 ] == 0) | ||||
|                 --len; | ||||
|             using (MemoryStream ms = new MemoryStream(data,0, len, false)) | ||||
|             { | ||||
|                 using (XmlReader reader = XmlReader.Create(ms, new XmlReaderSettings() { IgnoreWhitespace = true, ConformanceLevel = ConformanceLevel.Fragment })) | ||||
|                 { | ||||
|                     try | ||||
|                     { | ||||
|                         return FromOriginalXmlFormat(reader); | ||||
|                     } | ||||
|                     catch (Exception e) | ||||
|                     { | ||||
|                         m_log.Error("[SERIALIZER]: Deserialization of xml data failed ", e); | ||||
|                         string s = Utils.BytesToString(data); | ||||
|                         return null; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         /// <summary> | ||||
|         /// Deserialize a scene object from the original xml format | ||||
|         /// </summary> | ||||
|  |  | |||
|  | @ -808,7 +808,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
|             } | ||||
|             else | ||||
|             { | ||||
|                 SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlFormat(Utils.BytesToString(sceneObjectAsset.Data)); | ||||
|                 SceneObjectGroup sog = SceneObjectSerializer.FromOriginalXmlData(sceneObjectAsset.Data); | ||||
|                 if (null != sog) | ||||
|                 { | ||||
|                     sog.TemporaryInstance = true; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 UbitUmarov
						UbitUmarov