From 7a3c714e48697e44f2be66d27e90981b59b06959 Mon Sep 17 00:00:00 2001 From: Alex Zolotarev Date: Wed, 23 Jul 2014 23:08:39 +0300 Subject: [PATCH] =?UTF-8?q?Fixed=20serialization=20bug=20-=20inconsistent?= =?UTF-8?q?=20m=5FcoastCell=20read/write=20(it=E2=80=99s=20not=20used=20fo?= =?UTF-8?q?r=20point=20types)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- generator/feature_builder.cpp | 28 +++++++++++++++------------- generator/feature_builder.hpp | 1 + 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/generator/feature_builder.cpp b/generator/feature_builder.cpp index bd7bacf8ec..b947d7fed6 100644 --- a/generator/feature_builder.cpp +++ b/generator/feature_builder.cpp @@ -329,9 +329,10 @@ void FeatureBuilder1::Serialize(buffer_t & data) const for (list::const_iterator i = m_polygons.begin(); i != m_polygons.end(); ++i) serial::SaveOuterPath(*i, cp, sink); + + WriteVarInt(sink, m_coastCell); } - WriteVarInt(sink, m_coastCell); // check for correct serialization #ifdef DEBUG @@ -356,21 +357,22 @@ void FeatureBuilder1::Deserialize(buffer_t & data) { m_center = serial::LoadPoint(source, cp); m_limitRect.Add(m_center); - return; } - - m_polygons.clear(); - uint32_t const count = ReadVarUint(source); - ASSERT_GREATER ( count, 0, (*this) ); - - for (uint32_t i = 0; i < count; ++i) + else { - m_polygons.push_back(points_t()); - serial::LoadOuterPath(source, cp, m_polygons.back()); - CalcRect(m_polygons.back(), m_limitRect); - } + m_polygons.clear(); + uint32_t const count = ReadVarUint(source); + ASSERT_GREATER ( count, 0, (*this) ); - m_coastCell = ReadVarInt(source); + for (uint32_t i = 0; i < count; ++i) + { + m_polygons.push_back(points_t()); + serial::LoadOuterPath(source, cp, m_polygons.back()); + CalcRect(m_polygons.back(), m_limitRect); + } + + m_coastCell = ReadVarInt(source); + } CHECK ( CheckValid(), (*this) ); } diff --git a/generator/feature_builder.hpp b/generator/feature_builder.hpp index 892db5d88e..6b94dc5aa1 100644 --- a/generator/feature_builder.hpp +++ b/generator/feature_builder.hpp @@ -184,6 +184,7 @@ protected: /// List of geometry polygons. list m_polygons; // Check HEADER_IS_AREA + /// Not used in GEOM_POINTs int64_t m_coastCell; };