diff options
author | Yuri Gorshenin <y@maps.me> | 2016-05-27 11:12:22 +0300 |
---|---|---|
committer | Yuri Gorshenin <y@maps.me> | 2016-05-27 11:31:21 +0300 |
commit | 4b89e01e1cdb38b39b7ce4f81e1ce9f05da27903 (patch) | |
tree | e523dbb55eea5b52dba7a3fb01892535d514eb3b /search/v2/geocoder.cpp | |
parent | 6f84875fb9912ef2d199418605362c1e427db578 (diff) |
[search] Fixed crash in postcodes search.
Diffstat (limited to 'search/v2/geocoder.cpp')
-rw-r--r-- | search/v2/geocoder.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/search/v2/geocoder.cpp b/search/v2/geocoder.cpp index f61dbf66da..6bfb8859ec 100644 --- a/search/v2/geocoder.cpp +++ b/search/v2/geocoder.cpp @@ -222,7 +222,8 @@ void JoinQueryTokens(QueryParams const & params, size_t curToken, size_t endToke } else { - ASSERT_EQUAL(i, params.m_tokens.size(), ()); + CHECK_EQUAL(i, params.m_tokens.size(), ()); + CHECK(!params.m_prefixTokens.empty(), ()); res.append(params.m_prefixTokens.front()); } @@ -1044,17 +1045,18 @@ void Geocoder::WithPostcodes(TFn && fn) auto postcodes = RetrievePostcodeFeatures(*m_context, TokenSlice(m_params, startToken, endToken)); + MY_SCOPE_GUARD(cleanup, [&]() { m_postcodes.Clear(); }); + if (!coding::CompressedBitVector::IsEmpty(postcodes)) { ScopedMarkTokens mark(m_usedTokens, startToken, endToken); + m_postcodes.Clear(); m_postcodes.m_startToken = startToken; m_postcodes.m_endToken = endToken; m_postcodes.m_features = move(postcodes); fn(); - - m_postcodes.Clear(); } } } |