fix(HostEntry): preserve order of addresses and aliases (fixes #3807)

This commit is contained in:
Matej Kenda 2024-02-28 14:24:00 +01:00
parent 8119259c89
commit c624b27878
2 changed files with 13 additions and 7 deletions

View File

@ -76,13 +76,6 @@ public:
/// for the host.
private:
template <typename C>
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;

View File

@ -15,12 +15,25 @@
#include "Poco/Net/HostEntry.h"
#include "Poco/Exception.h"
#include <algorithm>
#include <set>
namespace Poco {
namespace Net {
template <typename T>
void removeDuplicates(std::vector<T>& list)
{
std::set<T> 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()
{
}