aboutsummaryrefslogtreecommitdiff
path: root/src/server/collision/Maps/TileAssembler.cpp
diff options
context:
space:
mode:
authorSpp <none@none>2010-12-06 02:07:53 +0100
committerSpp <none@none>2010-12-06 02:07:53 +0100
commit408fce1de69249b82cc042cb31f3fd16983c7e81 (patch)
treef4b99f386821e70f155d9aa61b70cfb1f2d3d825 /src/server/collision/Maps/TileAssembler.cpp
parente226c4ac344d06c7abbd6f04725ced2b33606349 (diff)
Core: Some optimizations
- Declare some functions const - Fix some mem leak - Fix some resource leak - Remove unused variables and functions - Remove duplicate functions - Reduce the scope of some variables - Remove unused file --HG-- branch : trunk
Diffstat (limited to 'src/server/collision/Maps/TileAssembler.cpp')
-rw-r--r--src/server/collision/Maps/TileAssembler.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/server/collision/Maps/TileAssembler.cpp b/src/server/collision/Maps/TileAssembler.cpp
index 22982fe86f5..ac451b8913f 100644
--- a/src/server/collision/Maps/TileAssembler.cpp
+++ b/src/server/collision/Maps/TileAssembler.cpp
@@ -264,6 +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++;
+ #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++;
+
#define CMP_OR_RETURN(V,S) if(strcmp((V),(S)) != 0) { \
fclose(rf); printf("cmpfail, %s!=%s\n", V, S);return(false); }
@@ -309,11 +312,12 @@ namespace VMAP
if (nvectors >0)
{
vectorarray = new float[nvectors*3];
- READ_OR_RETURN(vectorarray, nvectors*sizeof(float)*3);
+ READ_OR_RETURN_WITH_DELETE(vectorarray, nvectors*sizeof(float)*3);
}
else
{
std::cout << "error: model '" << spawn.name << "' has no geometry!" << std::endl;
+ fclose(rf);
return false;
}
@@ -370,6 +374,8 @@ 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++;
+ #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++;
#define CMP_OR_RETURN(V,S) if(strcmp((V),(S)) != 0) { \
fclose(rf); printf("cmpfail, %s!=%s\n", V, S);return(false); }
@@ -429,7 +435,7 @@ namespace VMAP
if (nindexes >0)
{
uint16 *indexarray = new uint16[nindexes];
- READ_OR_RETURN(indexarray, nindexes*sizeof(uint16));
+ READ_OR_RETURN_WITH_DELETE(indexarray, nindexes*sizeof(uint16));
for (uint32 i=0; i<nindexes; i+=3)
{
triangles.push_back(MeshTriangle(indexarray[i], indexarray[i+1], indexarray[i+2]));
@@ -447,7 +453,7 @@ namespace VMAP
if (nvectors >0)
{
float *vectorarray = new float[nvectors*3];
- READ_OR_RETURN(vectorarray, nvectors*sizeof(float)*3);
+ READ_OR_RETURN_WITH_DELETE(vectorarray, nvectors*sizeof(float)*3);
for (uint32 i=0; i<nvectors; ++i)
{
vertexArray.push_back( Vector3(vectorarray + 3*i) );