diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:47:36 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2009-09-02 00:47:36 +0000 |
commit | 2455cd671f4dbc017cf7bb76fb7b29e9f95f3b40 (patch) | |
tree | 32f56448c301d523916c6f14f3e25a442aec4d29 | |
parent | 771016b99723ae1b4924b85297817a7957563981 (diff) |
Remove strnewdup(), it is a good source of possible memory leaks
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11622 e03df62e-2008-0410-955e-edbf42e46eb7
-rw-r--r-- | include/configreader.h | 8 | ||||
-rw-r--r-- | include/inspstring.h | 14 | ||||
-rw-r--r-- | src/configreader.cpp | 8 | ||||
-rw-r--r-- | src/users.cpp | 4 |
4 files changed, 10 insertions, 24 deletions
diff --git a/include/configreader.h b/include/configreader.h index e70a1478a..c8cd13081 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -46,19 +46,19 @@ struct operclass_data : public classbase { /** Command list for the class */ - char *commandlist; + std::string commandlist; /** Channel mode list for the class */ - char *cmodelist; + std::string cmodelist; /** User mode list for the class */ - char *umodelist; + std::string umodelist; /** Priviledges given by this class */ - char *privs; + std::string privs; }; /** A Set of oper classes diff --git a/include/inspstring.h b/include/inspstring.h index 54bb1c8bd..4a7fa6271 100644 --- a/include/inspstring.h +++ b/include/inspstring.h @@ -39,19 +39,5 @@ CoreExport int charlcat(char* x,char y,int z); */ CoreExport bool charremove(char* mp, char remove); -/** strnewdup() is an implemenetation of strdup() which calls operator new - * rather than malloc to allocate the new string, therefore allowing it to - * be hooked into the C++ memory manager, and freed with operator delete. - * This is required for windows, where we override operators new and delete - * to allow for global allocation between modules and the core. - */ -inline char * strnewdup(const char * s1) -{ - size_t len = strlen(s1) + 1; - char * p = new char[len]; - memcpy(p, s1, len); - return p; -} - #endif diff --git a/src/configreader.cpp b/src/configreader.cpp index 7babc7bb7..eaea3f006 100644 --- a/src/configreader.cpp +++ b/src/configreader.cpp @@ -558,10 +558,10 @@ static bool DoClass(ServerConfig* conf, const char* tag, const char**, ValueList } } - conf->operclass[ClassName].commandlist = strnewdup(CommandList); - conf->operclass[ClassName].umodelist = strnewdup(UModeList); - conf->operclass[ClassName].cmodelist = strnewdup(CModeList); - conf->operclass[ClassName].privs = strnewdup(PrivsList); + conf->operclass[ClassName].commandlist = CommandList; + conf->operclass[ClassName].umodelist = UModeList; + conf->operclass[ClassName].cmodelist = CModeList; + conf->operclass[ClassName].privs = PrivsList; return true; } diff --git a/src/users.cpp b/src/users.cpp index 921403f47..fdad68e2a 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -787,7 +787,7 @@ void User::Oper(const std::string &opertype, const std::string &opername) this->AllowedPrivs->insert(mypriv); } - for (unsigned char* c = (unsigned char*)iter_operclass->second.umodelist; *c; ++c) + for (unsigned char* c = (unsigned char*)iter_operclass->second.umodelist.c_str(); *c; ++c) { if (*c == '*') { @@ -799,7 +799,7 @@ void User::Oper(const std::string &opertype, const std::string &opername) } } - for (unsigned char* c = (unsigned char*)iter_operclass->second.cmodelist; *c; ++c) + for (unsigned char* c = (unsigned char*)iter_operclass->second.cmodelist.c_str(); *c; ++c) { if (*c == '*') { |