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;

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to