Author: axeld Date: 2010-10-01 08:52:18 +0200 (Fri, 01 Oct 2010) New Revision: 38867 Changeset: http://dev.haiku-os.org/changeset/38867 Ticket: http://dev.haiku-os.org/ticket/6565 Modified: haiku/trunk/src/add-ons/kernel/network/stack/interfaces.cpp Log: * 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. Modified: haiku/trunk/src/add-ons/kernel/network/stack/interfaces.cpp =================================================================== --- haiku/trunk/src/add-ons/kernel/network/stack/interfaces.cpp 2010-10-01 06:49:24 UTC (rev 38866) +++ haiku/trunk/src/add-ons/kernel/network/stack/interfaces.cpp 2010-10-01 06:52:18 UTC (rev 38867) @@ -85,6 +85,22 @@ 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 @@ { 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;