[mapguide-commits] r6547 - trunk/MgDev/Common/PlatformBase/Services

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Mar 15 07:43:38 EDT 2012


Author: jng
Date: 2012-03-15 04:43:38 -0700 (Thu, 15 Mar 2012)
New Revision: 6547

Modified:
   trunk/MgDev/Common/PlatformBase/Services/Raster.cpp
Log:
#1968: Fix incorrect serialization/deserialization in MgRaster. Reviewed by Trevor Wekel

Modified: trunk/MgDev/Common/PlatformBase/Services/Raster.cpp
===================================================================
--- trunk/MgDev/Common/PlatformBase/Services/Raster.cpp	2012-03-15 06:30:11 UTC (rev 6546)
+++ trunk/MgDev/Common/PlatformBase/Services/Raster.cpp	2012-03-15 11:43:38 UTC (rev 6547)
@@ -226,7 +226,16 @@
         stream->WriteString(m_rasterPropName);
         stream->WriteInt32(m_bpp);
         stream->WriteInt32(m_dataModel);
-        stream->WriteObject(m_palette.p);
+        
+        // hack to handle null palette. (NOTE: copy/pasted MgByte serialization logic from MgSpatialContextData)
+        Ptr<MgByte> tmpPalette = m_palette;
+        if (tmpPalette == NULL)
+            tmpPalette = new MgByte();
+
+        Ptr<MgByteSource> byteSource = new MgByteSource(tmpPalette);
+        Ptr<MgByteReader> byteReader = byteSource->GetReader();
+        stream->WriteStream(byteReader);
+
 //      stream->WriteObject(m_extent);
         stream->WriteInt32(m_numBands);
         stream->WriteInt32(m_curBand);
@@ -247,7 +256,12 @@
         stream->GetString(m_rasterPropName);
         stream->GetInt32(m_bpp);
         stream->GetInt32(m_dataModel);
-        m_palette = (MgByte*)stream->GetObject();
+
+        //(NOTE: copy/pasted MgByte deserialization logic from MgSpatialContextData)
+        Ptr<MgByteReader> byteReader = stream->GetStream();
+        Ptr<MgByteSink> byteSink = new MgByteSink(byteReader);
+        m_palette = byteSink->ToBuffer();
+
 //      m_extent = (MgEnvelope*)stream->GetObject();
         stream->GetInt32(m_numBands);
         stream->GetInt32(m_curBand);



More information about the mapguide-commits mailing list