]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/tcpclient.cpp
fixed a ton of memory leaks
[irc/gameservirc.git] / gameserv / tcpclient.cpp
index f3c7aba0feeb68b50573ef75e51391db49603fa4..48e7823371ba1ec40f001774ab3b11b775d6c9b2 100644 (file)
@@ -49,6 +49,7 @@ void prettyIntro();
 void check_idles();
 void clearClients();
 void clearPlayers();
+void clearItems();
 
 // Make this a daemon
 int daemon(int nochdir, int noclose);
@@ -80,6 +81,7 @@ int main(int argc, char *argv[])
                  cout << "Usage: gameserv [options] [configfile]" << endl;
                  cout << "Options:" << endl;
                  cout << "--help                        Displays this help dialogue" << endl;
+                 delete []conf;
                  return 1;
                }
          delete []conf;
@@ -518,34 +520,38 @@ int main(int argc, char *argv[])
                  source--;
 
 #if defined(P10)
-       } else if (stricmp(cmd, "P") == 0) {
-           char *rest, *dest;
-           char *longname;
-           longname = new char[strlen(s_GameServ) + strlen(servername) + 2];
-
-           sprintf(longname, "%S@%s", servername);
-
-           dest = strtok(NULL, " ");
-           rest = strtok(NULL, "");
-           if (stricmp(dest, gsnum) == 0 || stricmp(dest, longname) == 0)
-           {
-               delete [] longname;
-               gameserv(source, rest);
-           }
-           else if (stricmp(dest, c_Forest) == 0 && isListenOnCF())
-           {
-               delete [] longname;
-               forest(source, rest);
-           }
+         }
+       else if (stricmp(cmd, "P") == 0)
+         {
+               char *rest, *dest;
+               char *longname;
+               longname = new char[strlen(s_GameServ) + strlen(servername) + 2];
+               
+               sprintf(longname, "%S@%s", servername);
+               
+               dest = strtok(NULL, " ");
+               rest = strtok(NULL, "");
+               if (stricmp(dest, gsnum) == 0 || stricmp(dest, longname) == 0)
+                 {
+                       delete [] longname;
+                       gameserv(source, rest);
+                 }
+               else if (stricmp(dest, c_Forest) == 0 && isListenOnCF())
+                 {
+                       delete [] longname;
+                       forest(source, rest);
+                 }
 #else
-       } else if (stricmp(cmd, "PRIVMSG") == 0) {
+         }
+       else if (stricmp(cmd, "PRIVMSG") == 0)
+         {
            char *rest, *dest;
            dest = strtok(NULL, " ");
            rest = strtok(NULL, "");
            if (strnicmp(dest, s_GameServ, strlen(s_GameServ)) == 0)
-               gameserv(source, rest);
+                 gameserv(source, rest);
            else if (stricmp(dest, c_Forest) == 0 && isListenOnCF())
-               forest(source, rest);
+                 forest(source, rest);
 #endif
 #if defined(P10)
        } else if (stricmp(cmd, "J") == 0) {
@@ -622,7 +628,7 @@ int main(int argc, char *argv[])
   saveNews(newsdata, todaysnews);
   clearClients();
   clearPlayers();
-
+  clearItems();
   delete_monsters();
 
 #ifdef DEBUGMODE
@@ -947,7 +953,15 @@ void save_lastrollover()
     outfile << lastrollover << endl;
     outfile.close();
 }
-
+void clearItems()
+{
+  list<item*>::iterator iter;
+  for (iter = Items.begin(); iter != Items.end(); iter++)
+       {
+         delete (*iter);
+         Items.erase(iter);
+       }
+}
 void clearClients()
 {
   list<aClient*>::iterator iter;
@@ -960,6 +974,7 @@ void clearClients()
                }
        }
 }
+
 void clearPlayers()
 {
   list<Player*>::iterator iter;