From 6749e47f616e94d130a5fd45f45eee10591ebfbf Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 23 Dec 2002 23:05:12 +0000 Subject: [PATCH] Fixed bug in ModuleManager::GetModule(): The module pointer was not returned, when the module was already loaded. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2291 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tests/add-ons/kernel/kernelland_emu.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/tests/add-ons/kernel/kernelland_emu.cpp b/src/tests/add-ons/kernel/kernelland_emu.cpp index f737941783..a52e566da9 100644 --- a/src/tests/add-ons/kernel/kernelland_emu.cpp +++ b/src/tests/add-ons/kernel/kernelland_emu.cpp @@ -286,15 +286,20 @@ ModuleManager::GetModule(const char *path, module_info **infop) BAutolock _lock(fModules); Module *module = fModules.FindModule(path); if (!module) { + // module not yet loaded, try to get it module = new Module; error = module->Init(path); if (error == B_OK && !fModules.AddModule(module)) error = B_NO_MEMORY; - if (error == B_OK) { - module->Get(); - *infop = module->Info(); - } else + if (error != B_OK) { delete module; + module = NULL; + } + } + // "get" the module + if (error == B_OK) { + module->Get(); + *infop = module->Info(); } } return error;