Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvng <viktor.govako@gmail.com>2011-02-05 13:07:25 +0300
committerAlex Zolotarev <alex@maps.me>2015-09-23 01:11:40 +0300
commitb47f03877f822432de20c2bd57adf8053a0f4339 (patch)
tree71dfafd5c8148e8e861b51fe5a9a675e5ada4ee2 /indexer/geometry_serialization.hpp
parent197bb2c3ade260730946691d735b5118318f19ed (diff)
Better reserve logic in triangles decoding.
Diffstat (limited to 'indexer/geometry_serialization.hpp')
-rw-r--r--indexer/geometry_serialization.hpp9
1 files changed, 4 insertions, 5 deletions
diff --git a/indexer/geometry_serialization.hpp b/indexer/geometry_serialization.hpp
index c3698bf1f6..92067bab7c 100644
--- a/indexer/geometry_serialization.hpp
+++ b/indexer/geometry_serialization.hpp
@@ -36,7 +36,7 @@ namespace serial
void Encode(EncodeFunT fn, vector<m2::PointD> const & points, int64_t base, DeltasT & deltas);
typedef buffer_vector<m2::PointD, 32> OutPointsT;
- void Decode(DecodeFunT fn, DeltasT const & deltas, int64_t base, OutPointsT & points);
+ void Decode(DecodeFunT fn, DeltasT const & deltas, int64_t base, OutPointsT & points, size_t reserveF = 1);
template <class TSink>
void SaveInner(EncodeFunT fn, vector<m2::PointD> const & points, int64_t base, TSink & sink)
@@ -70,7 +70,7 @@ namespace serial
void const * LoadInner(DecodeFunT fn, void const * pBeg, size_t count, int64_t base, OutPointsT & points);
template <class TSource>
- void LoadOuter(DecodeFunT fn, TSource & src, int64_t base, OutPointsT & points)
+ void LoadOuter(DecodeFunT fn, TSource & src, int64_t base, OutPointsT & points, size_t reserveF = 1)
{
uint32_t const count = ReadVarUint<uint32_t>(src);
vector<char> buffer(count);
@@ -81,8 +81,7 @@ namespace serial
deltas.reserve(count / 2);
ReadVarUint64Array(p, p + count, MakeBackInsertFunctor(deltas));
- points.reserve(deltas.size());
- Decode(fn, deltas, base, points);
+ Decode(fn, deltas, base, points, reserveF);
}
@@ -163,7 +162,7 @@ namespace serial
int const count = ReadPrimitiveFromSource<uint8_t>(src);
for (int i = 0; i < count; ++i)
- LoadOuter(&DecodeTriangles, src, base, triangles);
+ LoadOuter(&DecodeTriangles, src, base, triangles, 3);
}
//@}
}