From c624b2787849a92e5bcb4eb9ec67e6e363bbadad Mon Sep 17 00:00:00 2001 From: Matej Kenda Date: Wed, 28 Feb 2024 14:24:00 +0100 Subject: [PATCH] fix(HostEntry): preserve order of addresses and aliases (fixes #3807) --- Net/include/Poco/Net/HostEntry.h | 7 ------- Net/src/HostEntry.cpp | 13 +++++++++++++ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/Net/include/Poco/Net/HostEntry.h b/Net/include/Poco/Net/HostEntry.h index f194ca659..e3dfab53e 100644 --- a/Net/include/Poco/Net/HostEntry.h +++ b/Net/include/Poco/Net/HostEntry.h @@ -76,13 +76,6 @@ public: /// for the host. private: - template - void removeDuplicates(C& list) - { - std::sort(list.begin(), list.end()); - auto last = std::unique(list.begin(), list.end()); - list.erase(last, list.end()); - } std::string _name; AliasList _aliases; diff --git a/Net/src/HostEntry.cpp b/Net/src/HostEntry.cpp index 79a1d7cae..b045d264f 100644 --- a/Net/src/HostEntry.cpp +++ b/Net/src/HostEntry.cpp @@ -15,12 +15,25 @@ #include "Poco/Net/HostEntry.h" #include "Poco/Exception.h" #include +#include namespace Poco { namespace Net { +template +void removeDuplicates(std::vector& list) +{ + std::set uniqueValues; + // Remove duplicates and preserve order + list.erase( + std::remove_if(list.begin(), list.end(), [&uniqueValues](const T& value) { return !uniqueValues.insert(value).second; }), + list.end() + ); +} + + HostEntry::HostEntry() { }