From 2fd70ed49da53ca5b413764316917769ab52f4f5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 11 May 2011 14:11:20 +0200 Subject: Core/Collision: Fixed possible memory leaks --- src/server/collision/Maps/TileAssembler.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'src/server') 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"); -- cgit v1.2.3