From 5bab2844c11faaeeb9c228661ac8a9baf9626492 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Tue, 12 Sep 2006 00:22:10 +0000 Subject: [PATCH] This fixes the crashing bug #849. Unfortunately, it still crashes, just at a different location. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18815 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/device_manager/scan.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/system/kernel/device_manager/scan.c b/src/system/kernel/device_manager/scan.c index 983d80464c..0a2281f147 100644 --- a/src/system/kernel/device_manager/scan.c +++ b/src/system/kernel/device_manager/scan.c @@ -1,13 +1,11 @@ /* - * Copyright 2004-2005, Axel Dörfler, axeld@pinc-software.de. All rights reserved. + * Copyright 2004-2006, Axel Dörfler, axeld@pinc-software.de. All rights reserved. * Copyright 2002-2004, Thomas Kurschel. All rights reserved. * * Distributed under the terms of the MIT License. */ /* - Part of PnP Manager - Scanning for consumers. Logic to execute (re)scanning of nodes. @@ -94,10 +92,16 @@ scan_bus(device_node_info *node, bool rescan) { // busses can register their children themselves bus_module_info *interface; + status_t status; void *cookie; // load driver during rescan - pnp_load_driver(node, NULL, (driver_module_info **)&interface, &cookie); + + status = pnp_load_driver(node, NULL, (driver_module_info **)&interface, &cookie); + if (status < B_OK) { + // we couldn't load a driver that had already registered itself... + return; + } TRACE(("scan bus\n"));