[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43842] trunk/blender/source: Fix #29381: Navmeshs frees not guarded allocated memory and leaked
Sergey Sharybin
sergey.vfx at gmail.com
Thu Feb 2 09:48:44 CET 2012
Revision: 43842
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43842
Author: nazgul
Date: 2012-02-02 08:48:43 +0000 (Thu, 02 Feb 2012)
Log Message:
-----------
Fix #29381: Navmeshs frees not guarded allocated memory and leaked
There were two issues discovered:
- Triangles mapping didn't free in buildNavMeshData if there's no recast data for an object
- KX_NavMeshObject used not-guarded allocation for polygons storage, but used guarded
freeing stuff to free used memory, producing error messages in the console and leading to
memory leak.
Wasn't actually harmful for users -- there was no memory corruptions and error happens only
when object was set up in a way when navmesh can't work in theory.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/navmesh_conversion.c
trunk/blender/source/gameengine/Ketsji/KX_NavMeshObject.cpp
Modified: trunk/blender/source/blender/blenkernel/intern/navmesh_conversion.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/navmesh_conversion.c 2012-02-02 08:47:46 UTC (rev 43841)
+++ trunk/blender/source/blender/blenkernel/intern/navmesh_conversion.c 2012-02-02 08:48:43 UTC (rev 43842)
@@ -344,7 +344,7 @@
int *vertsPerPoly_r, int **dtrisToPolysMap_r, int **dtrisToTrisMap_r)
{
- int *trisMapping = MEM_callocN(sizeof(int)*ntris, "buildNavMeshData trisMapping");
+ int *trisMapping;
int i;
struct SortContext context;
int validTriStart, prevPolyIdx, curPolyIdx, newPolyIdx, prevpolyidx;
@@ -360,6 +360,8 @@
return 0;
}
+ trisMapping = MEM_callocN(sizeof(int)*ntris, "buildNavMeshData trisMapping");
+
//sort the triangles by polygon idx
for (i=0; i<ntris; i++)
trisMapping[i]=i;
Modified: trunk/blender/source/gameengine/Ketsji/KX_NavMeshObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_NavMeshObject.cpp 2012-02-02 08:47:46 UTC (rev 43841)
+++ trunk/blender/source/gameengine/Ketsji/KX_NavMeshObject.cpp 2012-02-02 08:48:43 UTC (rev 43842)
@@ -248,7 +248,7 @@
}
//create tris
- polys = new unsigned short[npolys*3*2];
+ polys = (unsigned short*)MEM_callocN(sizeof(unsigned short)*3*2*npolys, "BuildVertIndArrays polys");
memset(polys, 0xff, sizeof(unsigned short)*3*2*npolys);
unsigned short *poly = polys;
RAS_Polygon* raspoly;
More information about the Bf-blender-cvs
mailing list