aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2011-05-11 14:11:20 +0200
committerShauren <shauren.trinity@gmail.com>2011-05-11 14:11:20 +0200
commit2fd70ed49da53ca5b413764316917769ab52f4f5 (patch)
tree202cdf1297f336447dcb05b5b9fbbff4259be9f5 /src
parented3700634fbb0d65dacc0b7d78b1d1811807cdd5 (diff)
Core/Collision: Fixed possible memory leaks
Diffstat (limited to 'src')
-rw-r--r--src/server/collision/Maps/TileAssembler.cpp9
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");