Changeset 5777


Ignore:
Timestamp:
09/13/10 15:07:21 (15 years ago)
Author:
Mathieu Morlighem
Message:

Fixed Marshal and Demarshall of DofIndexing

File:
1 edited

Legend:

Unmodified
Added
Removed
  • issm/trunk/src/c/objects/DofIndexing.cpp

    r5772 r5777  
    5050        this->clone=in->clone;
    5151
    52         if(this->gsize){
     52        if(this->gsize>0 && this->gsize!=UNDEF){
    5353                this->f_set=(bool*)xmalloc(this->gsize*sizeof(bool));
    5454                this->s_set=(bool*)xmalloc(this->gsize*sizeof(bool));
     
    6464                this->gdoflist=NULL;
    6565        }
    66         if(this->fsize)this->fdoflist=(int*)xmalloc(this->fsize*sizeof(int)); else this->fdoflist=NULL;
    67         if(this->ssize)this->sdoflist=(int*)xmalloc(this->ssize*sizeof(int)); else this->sdoflist=NULL;
    68 
    69         if(this->gsize){
     66        if(this->fsize>0 && this->fsize!=UNDEF)this->fdoflist=(int*)xmalloc(this->fsize*sizeof(int)); else this->fdoflist=NULL;
     67        if(this->ssize>0 && this->ssize!=UNDEF)this->sdoflist=(int*)xmalloc(this->ssize*sizeof(int)); else this->sdoflist=NULL;
     68
     69        if(this->gsize>0 && this->gsize!=UNDEF){
    7070                memcpy(this->f_set,in->f_set,this->gsize*sizeof(bool));
    7171                memcpy(this->s_set,in->s_set,this->gsize*sizeof(bool));
     
    7474                memcpy(this->gdoflist,in->gdoflist,this->gsize*sizeof(int));
    7575        }
    76         if(this->fsize)memcpy(this->fdoflist,in->fdoflist,this->fsize*sizeof(int));
    77         if(this->ssize)memcpy(this->sdoflist,in->sdoflist,this->ssize*sizeof(int));
     76        if(this->fsize>0 && this->fsize!=UNDEF)memcpy(this->fdoflist,in->fdoflist,this->fsize*sizeof(int));
     77        if(this->ssize>0 && this->ssize!=UNDEF)memcpy(this->sdoflist,in->sdoflist,this->ssize*sizeof(int));
    7878
    7979}
     
    101101
    102102        /*allocate: */
    103         if(this->gsize){
     103        if(this->gsize>0 && this->gsize!=UNDEF){
    104104                this->f_set=(bool*)xmalloc(this->gsize*sizeof(bool));
    105105                this->s_set=(bool*)xmalloc(this->gsize*sizeof(bool));
     
    228228       
    229229        /*Allocate: */
    230         if(this->gsize){
     230        if(this->gsize>0 && this->gsize!=UNDEF){
    231231                this->f_set=(bool*)xmalloc(this->gsize*sizeof(bool));
    232232                this->s_set=(bool*)xmalloc(this->gsize*sizeof(bool));
     
    243243                this->gdoflist=NULL;
    244244        }
    245         if(this->fsize)this->fdoflist=(int*)xmalloc(this->fsize*sizeof(int));
    246         else           this->fdoflist=NULL;
    247         if(this->ssize)this->sdoflist=(int*)xmalloc(this->ssize*sizeof(int));
    248         else           this->sdoflist=NULL;
     245        if(this->fsize>0 && this->fsize!=UNDEF)
     246         this->fdoflist=(int*)xmalloc(this->fsize*sizeof(int));
     247        else
     248         this->fdoflist=NULL;
     249        if(this->ssize>0 && this->ssize!=UNDEF)
     250         this->sdoflist=(int*)xmalloc(this->ssize*sizeof(int));
     251        else
     252         this->sdoflist=NULL;
    249253
    250254        /*Copy arrays: */
    251         if(this->gsize){
     255        if(this->gsize>0 && this->gsize!=UNDEF){
    252256                memcpy(f_set,marshalled_dataset,gsize*sizeof(bool));marshalled_dataset+=gsize*sizeof(bool);
    253257                memcpy(s_set,marshalled_dataset,gsize*sizeof(bool));marshalled_dataset+=gsize*sizeof(bool);
     
    257261        }
    258262       
    259         if(this->fsize){ memcpy(this->fdoflist,marshalled_dataset,this->fsize*sizeof(int));marshalled_dataset+=this->fsize*sizeof(int); }
    260         if(this->ssize){ memcpy(this->sdoflist,marshalled_dataset,this->ssize*sizeof(int));marshalled_dataset+=this->ssize*sizeof(int); }
     263        if(this->fsize>0 && this->fsize!=UNDEF){ memcpy(this->fdoflist,marshalled_dataset,this->fsize*sizeof(int));marshalled_dataset+=this->fsize*sizeof(int); }
     264        if(this->ssize>0 && this->ssize!=UNDEF){ memcpy(this->sdoflist,marshalled_dataset,this->ssize*sizeof(int));marshalled_dataset+=this->ssize*sizeof(int); }
    261265
    262266        /*return: */
     
    292296        memcpy(marshalled_dataset,&clone,sizeof(clone));marshalled_dataset+=sizeof(clone);
    293297       
    294        
    295         if(this->gsize){
     298        if(this->gsize>0 && this->gsize!=UNDEF){
    296299                memcpy(marshalled_dataset,f_set,gsize*sizeof(bool));marshalled_dataset+=gsize*sizeof(bool);
    297300                memcpy(marshalled_dataset,s_set,gsize*sizeof(bool));marshalled_dataset+=gsize*sizeof(bool);
     
    300303                memcpy(marshalled_dataset,gdoflist,gsize*sizeof(int)); marshalled_dataset+=gsize*sizeof(int);
    301304        }
    302         if(this->fsize){ memcpy(marshalled_dataset,fdoflist,fsize*sizeof(int)); marshalled_dataset+=fsize*sizeof(int);}
    303         if(this->ssize){ memcpy(marshalled_dataset,sdoflist,ssize*sizeof(int)); marshalled_dataset+=ssize*sizeof(int);}
     305        if(this->fsize>0 && this->fsize!=UNDEF){ memcpy(marshalled_dataset,fdoflist,fsize*sizeof(int)); marshalled_dataset+=fsize*sizeof(int);}
     306        if(this->ssize>0 && this->ssize!=UNDEF){ memcpy(marshalled_dataset,sdoflist,ssize*sizeof(int)); marshalled_dataset+=ssize*sizeof(int);}
    304307
    305308        *pmarshalled_dataset=marshalled_dataset;
     
    313316
    314317        size+=4*sizeof(int)+sizeof(bool);
    315         if(this->gsize){
     318        if(this->gsize>0 && this->gsize!=UNDEF){
    316319                size+= 2*this->gsize*sizeof(bool)+
    317320                           this->gsize*sizeof(double)+
     
    319322                if(this->doftype)size+=this->gsize*sizeof(int);
    320323        }
    321         if(this->fsize)size+=this->fsize*sizeof(int);
    322         if(this->ssize)size+=this->ssize*sizeof(int);
     324        if(this->fsize>0 && this->fsize!=UNDEF)size+=this->fsize*sizeof(int);
     325        if(this->ssize>0 && this->ssize!=UNDEF)size+=this->ssize*sizeof(int);
    323326
    324327        size+=sizeof(int); //sizeof(int) for enum type
Note: See TracChangeset for help on using the changeset viewer.