Changeset 4195


Ignore:
Timestamp:
06/24/10 14:22:57 (15 years ago)
Author:
Eric.Larour
Message:

Some constructor and destructor problems with external results + patch mpi gather bug fix

Location:
issm/trunk/src/c
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/modules/OutputResultsx/ElementResultsToPatch.cpp

    r4143 r4195  
    9494        patch->MPI_Gather();
    9595
    96         /*create Result object and add to results dataset: */
     96        /*create result object and add to results dataset: */
    9797        results->AddObject(new DoubleMatExternalResult(results->Size()+1,PatchEnum,patch->values,patch->numrows,patch->numcols,1,0));
    9898
  • issm/trunk/src/c/objects/ExternalResults/DoubleMatExternalResult.cpp

    r4191 r4195  
    3535
    3636        /*Copy result in values*/
    37         if (M*N==0) ISSMERROR("result of enum %s has a size %ix%i and con not be allocated",EnumAsString(in_enum_type),in_M,in_N);
    38         values=(double*)xmalloc(M*N*sizeof(double));
    39         memcpy(values,in_values,M*N*sizeof(double));
     37        if(M*N){
     38                values=(double*)xmalloc(M*N*sizeof(double));
     39                memcpy(values,in_values,M*N*sizeof(double));
     40        }
     41        else values=NULL;
    4042
    4143        step=in_step;
     
    4547/*FUNCTION DoubleMatExternalResult::~DoubleMatExternalResult(){{{1*/
    4648DoubleMatExternalResult::~DoubleMatExternalResult(){
    47         xfree((void**)&values);
     49
     50        xfree((void**)&this->values);
    4851        return;
    4952}
  • issm/trunk/src/c/objects/ExternalResults/DoubleVecExternalResult.cpp

    r4182 r4195  
    3333        M=in_M;
    3434
    35         values=(double*)xmalloc(M*sizeof(double));
    36         memcpy(values,in_values,M*sizeof(double));
     35        if(M){
     36                values=(double*)xmalloc(M*sizeof(double));
     37                memcpy(values,in_values,M*sizeof(double));
     38        }
     39        else values=NULL;
    3740
    3841        step=in_step;
  • issm/trunk/src/c/objects/ExternalResults/PetscVecExternalResult.cpp

    r4182 r4195  
    3838                VecCopy(in_value,value);
    3939        }
     40        else value=NULL;
     41
    4042        step=in_step;
    4143        time=in_time;
Note: See TracChangeset for help on using the changeset viewer.