From 616698fa91c67906851e18c55835831bb5c1aa25 Mon Sep 17 00:00:00 2001 From: Chris Spiegel Date: Wed, 5 Nov 2025 10:42:12 -0800 Subject: [PATCH] Ensure erase() is called after std::unique() Without this the duplicates are just moved to the end of the collection, but not actually erased. --- osdep/BSDEthernetTap.cpp | 4 ++-- osdep/MacKextEthernetTap.cpp | 2 +- osdep/NetBSDEthernetTap.cpp | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/osdep/BSDEthernetTap.cpp b/osdep/BSDEthernetTap.cpp index 36e70ca7c..82ac07d1a 100644 --- a/osdep/BSDEthernetTap.cpp +++ b/osdep/BSDEthernetTap.cpp @@ -339,7 +339,7 @@ std::vector BSDEthernetTap::ips() const freeifaddrs(ifa); std::sort(r.begin(), r.end()); - std::unique(r.begin(), r.end()); + r.erase(std::unique(r.begin(), r.end()), r.end()); _ifaddrs = r; @@ -394,7 +394,7 @@ void BSDEthernetTap::scanMulticastGroups(std::vector& added, std newGroups.push_back(MulticastGroup::deriveMulticastGroupForAddressResolution(*ip)); std::sort(newGroups.begin(), newGroups.end()); - std::unique(newGroups.begin(), newGroups.end()); + newGroups.erase(std::unique(newGroups.begin(), newGroups.end()), newGroups.end()); for (std::vector::iterator m(newGroups.begin()); m != newGroups.end(); ++m) { if (! std::binary_search(_multicastGroups.begin(), _multicastGroups.end(), *m)) diff --git a/osdep/MacKextEthernetTap.cpp b/osdep/MacKextEthernetTap.cpp index 707858fd9..399742929 100644 --- a/osdep/MacKextEthernetTap.cpp +++ b/osdep/MacKextEthernetTap.cpp @@ -607,7 +607,7 @@ void MacKextEthernetTap::scanMulticastGroups(std::vector& added, newGroups.push_back(MulticastGroup::deriveMulticastGroupForAddressResolution(*ip)); std::sort(newGroups.begin(), newGroups.end()); - std::unique(newGroups.begin(), newGroups.end()); + newGroups.erase(std::unique(newGroups.begin(), newGroups.end()), newGroups.end()); for (std::vector::iterator m(newGroups.begin()); m != newGroups.end(); ++m) { if (! std::binary_search(_multicastGroups.begin(), _multicastGroups.end(), *m)) diff --git a/osdep/NetBSDEthernetTap.cpp b/osdep/NetBSDEthernetTap.cpp index 666a387f6..aa923bdb3 100644 --- a/osdep/NetBSDEthernetTap.cpp +++ b/osdep/NetBSDEthernetTap.cpp @@ -316,7 +316,7 @@ std::vector NetBSDEthernetTap::ips() const freeifaddrs(ifa); std::sort(r.begin(), r.end()); - std::unique(r.begin(), r.end()); + r.erase(std::unique(r.begin(), r.end()), r.end()); return r; } @@ -367,7 +367,7 @@ void NetBSDEthernetTap::scanMulticastGroups(std::vector& added, newGroups.push_back(MulticastGroup::deriveMulticastGroupForAddressResolution(*ip)); std::sort(newGroups.begin(), newGroups.end()); - std::unique(newGroups.begin(), newGroups.end()); + newGroups.erase(std::unique(newGroups.begin(), newGroups.end()), newGroups.end()); for (std::vector::iterator m(newGroups.begin()); m != newGroups.end(); ++m) { if (! std::binary_search(_multicastGroups.begin(), _multicastGroups.end(), *m))