]> jfr.im git - irc/gameservirc.git/blobdiff - gameserv/loadsave.cpp
Consolidated monster data into a single .dat file
[irc/gameservirc.git] / gameserv / loadsave.cpp
index 25d09ac89e8a7d4bc7a6a19eff848c20d477a85f..58d09a54b61164d1dcca12d780d16b6c72e5df2a 100755 (executable)
@@ -12,6 +12,7 @@
  #include "flags.h"
  #include "options.h"
  
+ #include <stdio.h>
  #include <fstream>
  
  using namespace std;
@@ -308,6 +309,8 @@ int load_items()
                break;
       try
                {
+         /* Need to check to see if this is a memory leak. It should
+            clear out on exit since STL list::clear() deletes its nodes */
                  if (buf[0] != '#' && buf[0] != '\n' && buf[0] != '\0')
                        {
                          switch(buf[0])
@@ -360,6 +363,7 @@ int load_gs_dbase()
   if (infile.fail())
     {
          log("Error opening %s", playerdata);
+     delete []buf;
          return 0;
     }
   
@@ -482,14 +486,14 @@ bool load_monsters()
   ifstream infile;
   char *buf;
   buf = new char[2048];
+  filename = new char[256];
   
   for (int level = 1; level <= LEVELS; level++)
        {
-         filename = new char[256];
-         sprintf(filename, "data/monsters/level%d.dat", level);
+         snprintf(filename, 256, "data/monsters/level%d.dat", level);
          infile.open(filename);
          
-         if (!infile)
+         if (infile.fail())
                {
                  log("Error opening %s", filename);
                  delete []filename;
@@ -517,12 +521,9 @@ bool load_monsters()
                  levels[level - 1].monsters.push_back(temp);
 
                }
-         delete [] filename;
          infile.close();
        }
   delete [] buf;
+  delete [] filename;
   return true;
 }
-
-
-