[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