Changes in libcfa/src/heap.cfa [1aa6ecb:a92a4fe]
- File:
-
- 1 edited
-
libcfa/src/heap.cfa (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/heap.cfa
r1aa6ecb ra92a4fe 10 10 // Created On : Tue Dec 19 21:58:35 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Oct 18 07:42:09201913 // Update Count : 55 612 // Last Modified On : Wed Jul 24 13:12:45 2019 13 // Update Count : 550 14 14 // 15 15 … … 541 541 // along with the block and is a multiple of the alignment size. 542 542 543 if ( unlikely( size > ~0ul - sizeof(HeapManager.Storage) ) ) return 0;544 543 size_t tsize = size + sizeof(HeapManager.Storage); 545 544 if ( likely( tsize < mmapStart ) ) { // small size => sbrk … … 593 592 block->header.kind.real.home = freeElem; // pointer back to free list of apropriate size 594 593 } else { // large size => mmap 595 if ( unlikely( size > ~0ul - pageSize ) ) return 0;596 594 tsize = libCeiling( tsize, pageSize ); // must be multiple of page size 597 595 #ifdef __STATISTICS__ … … 890 888 } // realloc 891 889 890 892 891 // The obsolete function memalign() allocates size bytes and returns a pointer to the allocated memory. The memory 893 892 // address will be a multiple of alignment, which must be a power of two. … … 993 992 size_t malloc_alignment( void * addr ) { 994 993 if ( unlikely( addr == 0 ) ) return libAlign(); // minimum alignment 995 HeapManager.Storage.Header * header = headerAddr( addr);994 HeapManager.Storage.Header * header = (HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) ); 996 995 if ( (header->kind.fake.alignment & 1) == 1 ) { // fake header ? 997 996 return header->kind.fake.alignment & -2; // remove flag from value … … 1005 1004 bool malloc_zero_fill( void * addr ) { 1006 1005 if ( unlikely( addr == 0 ) ) return false; // null allocation is not zero fill 1007 HeapManager.Storage.Header * header = headerAddr( addr ); 1006 1007 HeapManager.Storage.Header * header = (HeapManager.Storage.Header *)( (char *)addr - sizeof(HeapManager.Storage) ); 1008 1008 if ( (header->kind.fake.alignment & 1) == 1 ) { // fake header ? 1009 1009 header = (HeapManager.Storage.Header *)((char *)header - header->kind.fake.offset);
Note:
See TracChangeset
for help on using the changeset viewer.