From ec4fb0f4f0dc7bdafc43dcee0d011b7614eab0d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 1 Oct 2010 06:52:18 +0000 Subject: [PATCH] * Fixed a bug in get_interface() that would return the first interface without acquiring a reference to it, and thus led to bug #6565. * Added a commented out function that dumps all current reference counts. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38867 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/network/stack/interfaces.cpp | 23 ++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/src/add-ons/kernel/network/stack/interfaces.cpp b/src/add-ons/kernel/network/stack/interfaces.cpp index f6ae524f1b..28277fadeb 100644 --- a/src/add-ons/kernel/network/stack/interfaces.cpp +++ b/src/add-ons/kernel/network/stack/interfaces.cpp @@ -85,6 +85,22 @@ static AddressTable sAddressTable; static uint32 sInterfaceIndex; +#if 0 +//! For debugging purposes only +void +dump_interface_refs(void) +{ + MutexLocker locker(sLock); + + InterfaceList::Iterator iterator = sInterfaces.GetIterator(); + while (Interface* interface = iterator.Next()) { + dprintf("%p: %s, %ld\n", interface, interface->name, + interface->CountReferences()); + } +} +#endif + + #if ENABLE_DEBUGGER_COMMANDS @@ -1345,10 +1361,11 @@ get_interface(net_domain* domain, uint32 index) { MutexLocker locker(sLock); + Interface* interface; if (index == 0) - return sInterfaces.First(); - - Interface* interface = find_interface(index); + interface = sInterfaces.First(); + else + interface = find_interface(index); if (interface == NULL) return NULL;