memleaks with collidercache

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 29/09/2008 at 07:17, xxxxxxxx wrote:

User Information:
Cinema 4D Version:    
Platform:      
Language(s) :     C++  ;

---------
Hi,

im using the colliderCache in my code and have problems with mem leaks (again ;-) ). the code is based on the api example.

  
Bool FillColliderCache(GeColliderCache& c, BaseObject* obj,BaseDocument* doc)  
{       
    ModelingCommandData md1;   
     PolygonObject* poly = NULL;  
     // create a CSTO'd and joined copy. this function has no mem leaks!  
     BaseObject* objCopy = getPolyObject(obj,doc);  
     //triangulate  
     md1.op = objCopy; md1.doc = doc;       
     if(!SendModelingCommand(MCOMMAND_TRIANGULATE, md1)) goto Error;      
     AtomArray::Free(md1.result);AtomArray::Free(md1.arr);  
     poly = (static_cast<PolygonObject*>(md1.op));   
     if (!poly) goto Error;  
  
    // Get the polygon data  
     #ifdef C4D_R9            
          Polygon* tris = poly->GetPolygon();  
          Vector* points = poly->GetPoint();  
     #else       
           CPolygon* tris = poly->GetPolygonW();  
           Vector* points = poly->GetPointW();  
     #endif  
  
  
    // Fill the cache with the tri's  
    // if i comment out this block, the mem leaks are gone..  
    if (c.BeginInput(poly->GetPolygonCount()) != COL_OK) goto Error;  
     for (int i = 0; i < poly->GetPolygonCount(); ++i)  
      if (c.AddTriangle(points[tris _.a], points[tris _.b], points[tris _.c], i) != COL_OK) goto Error;        
    if (c.EndInput() != COL_OK) goto Error;          
  
  
     BaseObject::Free(objCopy);            
     //GeFree(points); // crash!  
     //GeFree(tris); // crash!  
     //BaseObject::Free(md1.op); // crash!  
  
    return TRUE;  
  
Error:  
     BaseObject::Free(objCopy);       
     return FALSE;  
}  

i thought the leaks were due to not freed points, tris and md1.op. But the problem is that cinema crashes when i try to free any of these..

When i outcomment the part were i store the tri's in the collidercache, the leaks are gone..
The collidercache itself is declared outside by autoalloc, so i assumed that all its data would be free'd automatically ?

In that regard I also trie the freePairsList() on the colliderCache, but that made no difference.

thanks,
Daniel