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:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-21 09:29:18 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-07-23 10:25:12 +0300
commit1f06ea2f68c68f80464142ee66d89a56de8ec900 (patch)
treefd36718baa8f20eff54386bb1e9ba4820ecdfe3b /indexer/altitude_loader.cpp
parent6ab081563cc1c3365837a85e9e3bd723088fa9b3 (diff)
Correct working altitude_loader in case of absence altitude section in mwm.
Diffstat (limited to 'indexer/altitude_loader.cpp')
-rw-r--r--indexer/altitude_loader.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/indexer/altitude_loader.cpp b/indexer/altitude_loader.cpp
index 5d539f5110..b39b983e51 100644
--- a/indexer/altitude_loader.cpp
+++ b/indexer/altitude_loader.cpp
@@ -30,14 +30,18 @@ void ReadBuffer(ReaderSource<FilesContainerR::TReader> & rs, vector<char> & buf)
namespace feature
{
AltitudeLoader::AltitudeLoader(MwmValue const * mwmValue)
- : reader(mwmValue->m_cont.GetReader(ALTITUDES_FILE_TAG)), m_altitudeInfoOffset(0), m_minAltitude(kInvalidAltitude)
+ : m_altitudeInfoOffset(0), m_minAltitude(kInvalidAltitude)
{
if (!mwmValue || mwmValue->GetHeader().GetFormat() < version::Format::v8 )
return;
+ if (!mwmValue->m_cont.IsExist(ALTITUDES_FILE_TAG))
+ return;
+
try
{
- ReaderSource<FilesContainerR::TReader> rs(reader);
+ m_reader = make_unique<FilesContainerR::TReader>(mwmValue->m_cont.GetReader(ALTITUDES_FILE_TAG));
+ ReaderSource<FilesContainerR::TReader> rs(*m_reader);
DeserializeHeader(rs);
// Reading rs_bit_vector with altitude availability information.
@@ -86,15 +90,15 @@ TAltitudes AltitudeLoader::GetAltitude(uint32_t featureId, size_t pointCount) co
uint64_t const r = m_altitudeAvailability->rank(featureId);
CHECK_LESS(r, m_altitudeAvailability->size(), (featureId));
uint64_t const offset = m_featureTable->select(r);
- CHECK_LESS(offset, m_featureTable->size(), (featureId));
+ CHECK_LESS_OR_EQUAL(offset, m_featureTable->size(), (featureId));
uint64_t const m_altitudeInfoOffsetInSection = m_altitudeInfoOffset + offset;
- CHECK_LESS(m_altitudeInfoOffsetInSection, reader.Size(), ());
+ CHECK_LESS(m_altitudeInfoOffsetInSection, m_reader->Size(), ());
try
{
Altitude a;
- ReaderSource<FilesContainerR::TReader> rs(reader);
+ ReaderSource<FilesContainerR::TReader> rs(*m_reader);
rs.Skip(m_altitudeInfoOffsetInSection);
a.Deserialize(m_minAltitude, pointCount, rs);