]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
/LOADMODULE and /UNLOADMODULE all successfully working!
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 7 Apr 2005 18:20:34 +0000 (18:20 +0000)
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>
Thu, 7 Apr 2005 18:20:34 +0000 (18:20 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1002 e03df62e-2008-0410-955e-edbf42e46eb7

src/inspircd.cpp
src/modules.cpp
src/modules/m_helpop.cpp

index dd1be77d9024413aee519e0bc1460d07ec134f73..44b84979c2d26c3d61a858d658f4d0af6ec61f4b 100644 (file)
@@ -3269,7 +3269,7 @@ bool UnloadModule(const char* filename)
        {
                if (module_names[j] == std::string(filename))
                {
-                       if (factory[j]->factory->GetVersion().Flags & VF_STATIC)
+                       if (modules[j]->GetVersion().Flags & VF_STATIC)
                        {
                                log(DEFAULT,"Failed to unload STATIC module %s",filename);
                                snprintf(MODERR,MAXBUF,"Module not unloadable (marked static)");
@@ -3277,6 +3277,9 @@ bool UnloadModule(const char* filename)
                        }
                        // found the module
                        log(DEBUG,"Deleting module...");
+                       delete modules[j];
+                       modules[j] = NULL;
+                       log(DEBUG,"Deleting module factory pointer...");
                        delete factory[j]->factory;
                        log(DEBUG,"Deleting module factory...");
                        delete factory[j];
@@ -3302,6 +3305,15 @@ bool UnloadModule(const char* filename)
                                         break;
                                 }
                         }
+                       log(DEBUG,"Erasing module pointer...");
+                       for (std::vector<Module*>::iterator m = modules.begin(); m!= modules.end(); m++)
+                       {
+                               if (*m == NULL)
+                               {
+                                       modules.erase(m);
+                                       break;
+                               }
+                       }
                         log(DEBUG,"Removing dependent commands...");
                         removecommands(filename);
                        log(DEFAULT,"Module %s unloaded",filename);
index 7242ae92e79678afee2c693bf2acb1b6fb1db25a..f068dc5911a5678a7e08a62fee9559a161cf9cc2 100644 (file)
@@ -315,7 +315,7 @@ void Module::OnRehash() { }
 void Module::OnServerRaw(std::string &raw, bool inbound, userrec* user) { }
 int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; }
 int Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params) { return false; }
-Version Module::GetVersion() { return Version(1,0,0,0); }
+Version Module::GetVersion() { return Version(1,0,0,0,VF_VENDOR); }
 void Module::OnOper(userrec* user) { };
 void Module::OnInfo(userrec* user) { };
 void Module::OnWhois(userrec* source, userrec* dest) { };
index 1798122b20384da0effc7994d51683ca26d34563..efe4f513d197cea1869934ad24e553d670ea1a6f 100644 (file)
@@ -201,7 +201,7 @@ class ModuleHelpop : public Module
        
        virtual Version GetVersion()
        {
-               return Version(0,0,0,1,VF_STATIC|VF_VENDOR);
+               return Version(1,0,0,1,VF_STATIC|VF_VENDOR);
        }
 };