From fd7ff3cfc863635f817cb9b5b7f5bef2be81cc44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 4 Jun 2008 10:50:06 +0000 Subject: [PATCH] * While it's okay to allow nodes with fixed children to register their own children, you either have dynamic or fixed children, never both. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25801 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../kernel/device_manager/device_manager.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/system/kernel/device_manager/device_manager.cpp b/src/system/kernel/device_manager/device_manager.cpp index 4dfeb4485b..09e36a46e3 100644 --- a/src/system/kernel/device_manager/device_manager.cpp +++ b/src/system/kernel/device_manager/device_manager.cpp @@ -1317,15 +1317,12 @@ device_node::Register(device_node* parent) // We don't uninitialize the driver - this is done by the caller // in order to save reinitializing during driver loading. - uint32 registered; - status = _RegisterFixed(registered); + uint32 registeredFixedCount; + status = _RegisterFixed(registeredFixedCount); if (status != B_OK) { UninitUnusedDriver(); return status; } - if (registered > 0) { - fRegistered = true; - } // Register the children the driver wants @@ -1342,6 +1339,13 @@ device_node::Register(device_node* parent) } } + if (registeredFixedCount > 0) { + // Nodes with fixed children cannot have any dynamic children, so bail + // out here + fRegistered = true; + return B_OK; + } + // Register all possible child device nodes status = _RegisterDynamic();