Changeset 18891


Ignore:
Timestamp:
11/28/14 10:46:27 (10 years ago)
Author:
Eric.Larour
Message:

CHG: fix leaks. Also in m1qn3 core, do not compile if in AD mode, not good.

Location:
issm/trunk-jpl/src/c/cores
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk-jpl/src/c/cores/controlad_core.cpp

    r18888 r18891  
    158158        IssmPDouble* G2=NULL;
    159159        bool onsid=true;
    160 
    161         /*Recover Femmodel*/
     160        IssmDouble  *XL = NULL;
     161        IssmDouble  *XU = NULL;
    162162        int         solution_type;
    163         FemModel   *femmodel  = (FemModel*)dzs;
     163        FemModel   *femmodel  =  NULL;
    164164        FemModel   *femmodelad  = NULL;
    165165        IssmDouble    pfd;
    166166        int            i;
     167       
     168        /*Recover Femmodel*/
     169        femmodel  = (FemModel*)dzs;
    167170
    168171        /*Recover number of cost functions responses*/
     
    175178
    176179        /*Constrain input vector*/
    177         IssmDouble  *XL = NULL;
    178         IssmDouble  *XU = NULL;
    179180        GetVectorFromControlInputsx(&XL,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"lowerbound",onsid);
    180181        GetVectorFromControlInputsx(&XU,femmodel->elements,femmodel->nodes,femmodel->vertices,femmodel->loads,femmodel->materials,femmodel->parameters,"upperbound",onsid);
     
    217218
    218219        if(IssmComm::GetRank()==0){
     220                IssmPDouble* G_temp=NULL;
    219221                GenericExternalResult<IssmPDouble*>* gradient=(GenericExternalResult<IssmPDouble*>*)femmodel->results->FindResult(AutodiffJacobianEnum); _assert_(gradient);
    220                 G2=gradient->GetValues();
     222                G_temp=gradient->GetValues();
     223                /*copy onto G2, to avoid a leak: */
     224                G2=xNew<IssmPDouble>(*n);
     225                xMemCpy<IssmPDouble>(G2,G_temp,*n);
    221226        }
    222227        else G2=xNew<IssmPDouble>(*n);
     
    252257        xDelete<IssmDouble>(XL);
    253258        xDelete<IssmPDouble>(G2);
    254         //if(femmodelad)delete femmodelad;
     259       
     260        xDelete<char>(rootpath);
     261        xDelete<char>(inputfilename
     262        xDelete<char>(outputfilename);
     263        xDelete<char>(toolkitsfilename);
     264        xDelete<char>(lockfilename);
     265        if(femmodelad)delete femmodelad;
     266
    255267} /*}}}*/
    256268#else
  • issm/trunk-jpl/src/c/cores/controlm1qn3_core.cpp

    r18868 r18891  
    1111#include "../solutionsequences/solutionsequences.h"
    1212
    13 #if defined (_HAVE_M1QN3_)
     13#if defined (_HAVE_M1QN3_) & !defined(_HAVE_ADOLC_)
    1414/*m1qn3 prototypes*/
    1515extern "C" void *ctonbe_; // DIS mode : Conversion
Note: See TracChangeset for help on using the changeset viewer.