diff options
author | Shauren <shauren.trinity@gmail.com> | 2011-05-11 14:11:20 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2011-05-11 14:11:20 +0200 |
commit | 2fd70ed49da53ca5b413764316917769ab52f4f5 (patch) | |
tree | 202cdf1297f336447dcb05b5b9fbbff4259be9f5 /src/server/collision/Maps/TileAssembler.cpp | |
parent | ed3700634fbb0d65dacc0b7d78b1d1811807cdd5 (diff) |
Core/Collision: Fixed possible memory leaks
Diffstat (limited to 'src/server/collision/Maps/TileAssembler.cpp')
-rw-r--r-- | src/server/collision/Maps/TileAssembler.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp index d2bbe851af0..c6000100d0b 100644 --- a/src/server/collision/Maps/TileAssembler.cpp +++ b/src/server/collision/Maps/TileAssembler.cpp @@ -264,8 +264,9 @@ namespace VMAP // temporary use defines to simplify read/check code (close file and return at fail) #define READ_OR_RETURN(V, S) if(fread((V), (S), 1, rf) != 1) { \ fclose(rf); printf("readfail, op = %i\n", readOperation); return(false); }readOperation++; + // only use this for array deletes #define READ_OR_RETURN_WITH_DELETE(V, S) if(fread((V), (S), 1, rf) != 1) { \ - fclose(rf); printf("readfail, op = %i\n", readOperation); delete V; return(false); }readOperation++; + fclose(rf); printf("readfail, op = %i\n", readOperation); delete[] V; return(false); }readOperation++; #define CMP_OR_RETURN(V, S) if(strcmp((V), (S)) != 0) { \ fclose(rf); printf("cmpfail, %s!=%s\n", V, S);return(false); } @@ -334,6 +335,7 @@ namespace VMAP delete[] vectorarray; // drop of temporary use defines #undef READ_OR_RETURN + #undef READ_OR_RETURN_WITH_DELETE #undef CMP_OR_RETURN } spawn.iBound = modelBound + spawn.iPos; @@ -375,7 +377,7 @@ namespace VMAP #define READ_OR_RETURN(V, S) if(fread((V), (S), 1, rf) != 1) { \ fclose(rf); printf("readfail, op = %i\n", readOperation); return(false); }readOperation++; #define READ_OR_RETURN_WITH_DELETE(V, S) if(fread((V), (S), 1, rf) != 1) { \ - fclose(rf); printf("readfail, op = %i\n", readOperation); delete V; return(false); }readOperation++; + fclose(rf); printf("readfail, op = %i\n", readOperation); delete[] V; return(false); }readOperation++; #define CMP_OR_RETURN(V, S) if(strcmp((V), (S)) != 0) { \ fclose(rf); printf("cmpfail, %s!=%s\n", V, S);return(false); } @@ -482,6 +484,7 @@ namespace VMAP // drop of temporary use defines #undef READ_OR_RETURN + #undef READ_OR_RETURN_WITH_DELETE #undef CMP_OR_RETURN } @@ -490,7 +493,7 @@ namespace VMAP // write WorldModel WorldModel model; model.setRootWmoID(RootWMOID); - if (groupsArray.size()) + if (!groupsArray.empty()) { model.setGroupModels(groupsArray); success = model.writeFile(iDestDir + "/" + pModelFilename + ".vmo"); |