Fixed various memory issues. (bug 5766, r=asherkin)
Fixed various memory issues. (
bug 5766, r=asherkin)
1.1 --- a/core/ConVarManager.cpp Mon Aug 12 00:42:56 2013 +0100
1.2 +++ b/core/ConVarManager.cpp Mon Aug 12 00:44:22 2013 +0100
1.3 @@ -304,14 +304,19 @@
1.4 delete pConVarList;
1.5 }
1.6
1.7 + const IPluginRuntime * pRuntime = plugin->GetRuntime();
1.8 +
1.9 /* Remove convar queries for this plugin that haven't returned results yet */
1.10 - for (iter = m_ConVarQueries.begin(); iter != m_ConVarQueries.end(); iter++)
1.11 + for (iter = m_ConVarQueries.begin(); iter != m_ConVarQueries.end();)
1.12 {
1.13 ConVarQuery &query = (*iter);
1.14 - if (query.pCallback->GetParentRuntime() == plugin->GetRuntime())
1.15 + if (query.pCallback->GetParentRuntime() == pRuntime)
1.16 {
1.17 - m_ConVarQueries.erase(iter);
1.18 + iter = m_ConVarQueries.erase(iter);
1.19 + continue;
1.20 }
1.21 +
1.22 + ++iter;
1.23 }
1.24 }
1.25
2.1 --- a/core/ForwardSys.cpp Mon Aug 12 00:42:56 2013 +0100
2.2 +++ b/core/ForwardSys.cpp Mon Aug 12 00:44:22 2013 +0100
2.3 @@ -681,7 +681,7 @@
2.4 lst = &m_paused;
2.5 }
2.6
2.7 - for (iter=m_functions.begin(); iter!=m_functions.end(); iter++)
2.8 + for (iter=lst->begin(); iter!=lst->end(); iter++)
2.9 {
2.10 if ((*iter) == func)
2.11 {
3.1 --- a/core/logic/PluginSys.cpp Mon Aug 12 00:42:56 2013 +0100
3.2 +++ b/core/logic/PluginSys.cpp Mon Aug 12 00:44:22 2013 +0100
3.3 @@ -2605,10 +2605,12 @@
3.4 smcore.Format(pluginfile, sizeof(pluginfile), "%s%s", arg, ext);
3.5
3.6 CPlugin **pluginpp = m_LoadLookup.retrieve(pluginfile);
3.7 - if (!pluginpp || !*pluginpp)
3.8 + if (!pluginpp)
3.9 {
3.10 return NULL;
3.11 }
3.12 +
3.13 + pl = *pluginpp;
3.14 }
3.15
3.16 return pl;
4.1 --- a/extensions/updater/md5.cpp Mon Aug 12 00:42:56 2013 +0100
4.2 +++ b/extensions/updater/md5.cpp Mon Aug 12 00:44:22 2013 +0100
4.3 @@ -171,14 +171,13 @@
4.4
4.5 unsigned char *MD5::raw_digest(){
4.6
4.7 - uint1 *s = new uint1[16];
4.8 -
4.9 if (!finalized){
4.10 /* cerr << "MD5::raw_digest: Can't get digest if you haven't "<<
4.11 "finalized the digest!" <<endl;*/
4.12 return ( (unsigned char*) "");
4.13 }
4.14
4.15 + uint1 *s = new uint1[16];
4.16 memcpy(s, digest, 16);
4.17 return s;
4.18 }
5.1 --- a/sourcepawn/jit/md5/md5.cpp Mon Aug 12 00:42:56 2013 +0100
5.2 +++ b/sourcepawn/jit/md5/md5.cpp Mon Aug 12 00:44:22 2013 +0100
5.3 @@ -171,14 +171,13 @@
5.4
5.5 unsigned char *MD5::raw_digest(){
5.6
5.7 - uint1 *s = new uint1[16];
5.8 -
5.9 if (!finalized){
5.10 /* cerr << "MD5::raw_digest: Can't get digest if you haven't "<<
5.11 "finalized the digest!" <<endl;*/
5.12 return ( (unsigned char*) "");
5.13 }
5.14
5.15 + uint1 *s = new uint1[16];
5.16 memcpy(s, digest, 16);
5.17 return s;
5.18 }
6.1 --- a/tools/gamedata_md5/md5.cpp Mon Aug 12 00:42:56 2013 +0100
6.2 +++ b/tools/gamedata_md5/md5.cpp Mon Aug 12 00:44:22 2013 +0100
6.3 @@ -171,14 +171,13 @@
6.4
6.5 unsigned char *MD5::raw_digest(){
6.6
6.7 - uint1 *s = new uint1[16];
6.8 -
6.9 if (!finalized){
6.10 /* cerr << "MD5::raw_digest: Can't get digest if you haven't "<<
6.11 "finalized the digest!" <<endl;*/
6.12 return ( (unsigned char*) "");
6.13 }
6.14
6.15 + uint1 *s = new uint1[16];
6.16 memcpy(s, digest, 16);
6.17 return s;
6.18 }
6.19 @@ -198,15 +197,15 @@
6.20
6.21 char *MD5::hex_digest(){
6.22
6.23 - int i;
6.24 - char *s= new char[33];
6.25 -
6.26 if (!finalized){
6.27 /* cerr << "MD5::hex_digest: Can't get digest if you haven't "<<
6.28 "finalized the digest!" <<endl;*/
6.29 return "";
6.30 }
6.31
6.32 + int i;
6.33 + char *s= new char[33];
6.34 +
6.35 for (i=0; i<16; i++)
6.36 sprintf(s+i*2, "%02x", digest[i]);
6.37