diff --git a/src/App.cpp b/src/App.cpp index 1916c1f..0fe7ad7 100644 --- a/src/App.cpp +++ b/src/App.cpp @@ -47,28 +47,31 @@ bool App::load(std::string lib, std::list blacklist = {}) { Module* m = create(h, App::Get()); - for(auto it = blacklist.begin(); it != blacklist.end(); it++) { - if(*it == m->getName()) { - std::cout << "Module \"" << *it << "\" is already loaded!\n"; - delete m; - dlclose(h); - return false; + if(!blacklist.empty()) { + for(auto it = blacklist.begin(); it != blacklist.end(); it++) { + if(*it == m->getName()) { + std::cout << "Module \"" << *it << "\" is already loaded!\n"; + delete m; + dlclose(h); + return false; + } } } blacklist.push_back(m->getName()); - bool skip = false; - - for(auto s = blacklist.begin(); s != blacklist.end(); s++) { - auto it = m->deps.find(*s); - if(it != m->deps.end()) - skip = true; - if(skip) { - skip = false; - continue; - } else { - load(it->second, blacklist); + if(!m->deps.empty()) { + bool skip = false; + for(auto s = blacklist.begin(); s != blacklist.end(); s++) { + auto it = m->deps.find(*s); + if(it != m->deps.end()) + skip = true; + if(skip) { + skip = false; + continue; + } else { + load(it->second, blacklist); + } } }