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