diff --git a/src/indexation/pht.cpp b/src/indexation/pht.cpp index f3ef596acbe1793575ded663daffd3a522304b98..7dd35333d076a85d7b9103f786682c69b881114b 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);