From 54aef01c729b339767fd5404b916b833b35de413 Mon Sep 17 00:00:00 2001 From: Mark Sturgill Date: Fri, 7 Mar 2014 17:36:28 -0700 Subject: [PATCH] (potentially) more portable implementation of double/float serialization for mono --- Server/Serialization.cs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/Server/Serialization.cs b/Server/Serialization.cs index 5d0bf8916..fb15bcf6d 100644 --- a/Server/Serialization.cs +++ b/Server/Serialization.cs @@ -484,10 +484,16 @@ namespace Server if( (m_Index + 8) > m_Buffer.Length ) Flush(); +#if MONO + byte[] bytes = BitConverter.GetBytes(value); + for(int i = 0; i < bytes.Length; i++) + m_Buffer[m_Index++] = bytes[i]; +#else fixed( byte* pBuffer = m_Buffer ) *((double*)(pBuffer + m_Index)) = value; m_Index += 8; +#endif } public unsafe override void Write( float value ) @@ -495,10 +501,16 @@ namespace Server if( (m_Index + 4) > m_Buffer.Length ) Flush(); - fixed( byte* pBuffer = m_Buffer ) +#if MONO + byte[] bytes = BitConverter.GetBytes(value); + for(int i = 0; i < bytes.Length; i++) + m_Buffer[m_Index++] = bytes[i]; +#else + fixed ( byte* pBuffer = m_Buffer ) *((float*)(pBuffer + m_Index)) = value; m_Index += 4; +#endif } private char[] m_SingleCharBuffer = new char[1];