Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcfa/src/heap.cfa

    rf76ff0b rc86f587  
    12391239        size_t odsize = dataStorage( bsize, oaddr, header ); // data storage available in bucket
    12401240
    1241         if ( oalign == nalign && size <= odsize && odsize <= size * 2 ) { // <= alignment and new alignment are same, allow 50% wasted storage for smaller size
    1242                 header->kind.real.blockSize &= -2;                      // turn off 0 fill
    1243                 header->kind.real.size = size;                          // reset allocation size
    1244                 return oaddr;
    1245         } // if
    1246         if ( oalign < nalign && (uintptr_t)oaddr % nalign == 0 && oalign > libAlign() ) { // <= alignment and new alignment happens to match, and oaddr has a fake header
    1247                 headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same)
     1241        if ( oalign <= nalign && (uintptr_t)oaddr % nalign == 0 ) { // <= alignment and new alignment happens to match
     1242                if ( oalign > libAlign() ) {                                    // fake header ?
     1243                        headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same)
     1244                } // if
    12481245                if ( size <= odsize && odsize <= size * 2 ) {   // allow 50% wasted storage for smaller size
    12491246                        header->kind.real.blockSize &= -2;                      // turn off 0 fill
     
    12851282        headers( "realloc", oaddr, header, freeElem, bsize, oalign );
    12861283
    1287         if ( oalign == nalign ) { // <= alignment and new alignment are same
    1288                 return realloc( oaddr, size );
    1289         } // if
    1290         if ( oalign < nalign && (uintptr_t)oaddr % nalign == 0 && oalign > libAlign() ) { // <= alignment and new alignment happens to match, and oaddr has a fake header
    1291                 headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same)
     1284        if ( oalign <= nalign && (uintptr_t)oaddr % nalign == 0 ) { // <= alignment and new alignment happens to match
     1285                if ( oalign > libAlign() ) {                                    // fake header ?
     1286                        headerAddr( oaddr )->kind.fake.alignment = nalign | 1; // update alignment (could be the same)
     1287                } // if
    12921288                return realloc( oaddr, size );
    12931289        } // if
Note: See TracChangeset for help on using the changeset viewer.