From ef8b9d44fbc43eef14b916dc323cdca8fb883fa2 Mon Sep 17 00:00:00 2001 From: kaldoran <kaldoran@live.fr> Date: Wed, 17 Aug 2016 12:13:21 -0400 Subject: [PATCH] Add filter of duplicate value --- src/indexation/pht.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/indexation/pht.cpp b/src/indexation/pht.cpp index f3ef596a..7dd35333 100644 --- a/src/indexation/pht.cpp +++ b/src/indexation/pht.cpp @@ -28,13 +28,13 @@ static std::string blobToString(const Blob &bl) { std::string Prefix::toString() const { std::stringstream ss; - ss << "Prefix : " << std::endl << "\tContent_ : "; + ss << "Prefix : " << std::endl << "\tContent_ : \""; ss << blobToString(content_); - ss << std::endl; + ss << "\"" << std::endl; - ss << "\tFlags_ : "; + ss << "\tFlags_ : \""; ss << blobToString(flags_); - ss << std::endl; + ss << "\"" << std::endl; return ss.str(); } @@ -193,6 +193,14 @@ void Pht::lookupStep(Prefix p, std::shared_ptr<int> lo, std::shared_ptr<int> hi, IndexEntry entry; entry.unpackValue(*value); + auto it = std::find_if(vals->cbegin(), vals->cend(), [&](const std::shared_ptr<IndexEntry>& ie) { + return ie->value == entry.value; + }); + + /* If we already got the value then get the next one */ + if (it != vals->cend()) + return true; + if (max_common_prefix_len) { /* inexact match case */ auto common_bits = Prefix::commonBits(p, entry.prefix); -- GitLab