From: brain Date: Mon, 11 Apr 2005 18:51:08 +0000 (+0000) Subject: Attempts to fix broken /loadmodule on some linux X-Git-Tag: v2.0.23~10601 X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=70e7450ebf0ce0fc4670fda0f18599268cd67273;p=user%2Fhenk%2Fcode%2Finspircd.git Attempts to fix broken /loadmodule on some linux git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1047 e03df62e-2008-0410-955e-edbf42e46eb7 --- diff --git a/src/inspircd.cpp b/src/inspircd.cpp index d1e6af874..ea3feb304 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -3519,20 +3519,39 @@ bool LoadModule(const char* filename) return false; } } + bool extended = false; + if (factory.size() < MODCOUNT+1) + { + factory.push_back(NULL); // make an empty space + bool extended = true; + } + factory[MODCOUNT+1] = new ircd_module(modfile); if (factory[MODCOUNT+1]->LastError()) { log(DEFAULT,"Unable to load %s: %s",modfile,factory[MODCOUNT+1]->LastError()); snprintf(MODERR,MAXBUF,"Loader/Linker error: %s",factory[MODCOUNT+1]->LastError()); + if (extended) + factory.erase(factory.end()); MODCOUNT--; return false; } if (factory[MODCOUNT+1]->factory) { + bool mextended = false; + if (modules.size() < MODCOUNT+1) + { + modules.push_back(NULL); + bool extended = true; + } modules[MODCOUNT+1] = factory[MODCOUNT+1]->factory->CreateModule(); /* save the module and the module's classfactory, if * this isnt done, random crashes can occur :/ */ module_names.push_back(filename); + if (extended) + factory.erase(factory.end()); + if (mextended) + modules.erase(modules.end()); } else {