[haiku-commits] Change in haiku[master]: Use std::set instead of std::list as suggested

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 13 Jun 2022 19:28:57 +0000

From Javier Steinaker <jsteinaker@xxxxxxxxx>:

Javier Steinaker has uploaded this change for review. ( 
https://review.haiku-os.org/c/haiku/+/5379 ;)


Change subject: Use std::set instead of std::list as suggested
......................................................................

Use std::set instead of std::list as suggested

Change-Id: I21aa81b6f4e7abdd7590c2bda1bfd9dd4974cb07
---
M src/apps/networkstatus/NetworkStatusView.cpp
1 file changed, 15 insertions(+), 0 deletions(-)



  git pull ssh://git.haiku-os.org:22/haiku refs/changes/79/5379/1

diff --git a/src/apps/networkstatus/NetworkStatusView.cpp 
b/src/apps/networkstatus/NetworkStatusView.cpp
index 84aaae7..d6fbdd6 100644
--- a/src/apps/networkstatus/NetworkStatusView.cpp
+++ b/src/apps/networkstatus/NetworkStatusView.cpp
@@ -519,9 +519,12 @@
        BNetworkRoster& roster = BNetworkRoster::Default();
        BNetworkInterface interface;
        uint32 cookie = 0;
+       std::set<BString> currentInterfaces;

        while (roster.GetNextInterface(&cookie, interface) == B_OK) {
                if ((interface.Flags() & IFF_LOOPBACK) == 0) {
+                       // Make a list of the current interfaces, needed later
+                       currentInterfaces.insert((BString)interface.Name());
                        int32 oldStatus = kStatusUnknown;
                        if (fInterfaceStatuses.find(interface.Name())
                                != fInterfaceStatuses.end()) {
@@ -550,6 +553,18 @@
                        fInterfaceStatuses[interface.Name()] = status;
                }
        }
+
+       /* Check every element in fInterfaceStatuses against our current 
interface
+          list. If it's not there, then the interface is not present anymore 
and
+          should be removed from fInterfaceStatuses.*/
+       auto it = fInterfaceStatuses.begin();
+       while (it != fInterfaceStatuses.end()) {
+               if (currentInterfaces.find(it->first) == 
currentInterfaces.end()) {
+                       it = fInterfaceStatuses.erase(it);
+               } else {
+                       ++it;
+               }
+       }
 }



--
To view, visit https://review.haiku-os.org/c/haiku/+/5379
To unsubscribe, or for help writing mail filters, visit 
https://review.haiku-os.org/settings

Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: I21aa81b6f4e7abdd7590c2bda1bfd9dd4974cb07
Gerrit-Change-Number: 5379
Gerrit-PatchSet: 1
Gerrit-Owner: Javier Steinaker <jsteinaker@xxxxxxxxx>
Gerrit-MessageType: newchange

Other related posts:

  • » [haiku-commits] Change in haiku[master]: Use std::set instead of std::list as suggested - Gerrit