X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/26c5e283d5bb7168b49caf0798eba6f04453240d..04a66a148e9ccf487f413f706638de516275929a:/gameserv/loadsave.cpp diff --git a/gameserv/loadsave.cpp b/gameserv/loadsave.cpp index 25d09ac..58d09a5 100755 --- a/gameserv/loadsave.cpp +++ b/gameserv/loadsave.cpp @@ -12,6 +12,7 @@ #include "flags.h" #include "options.h" + #include #include 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; } - - -