Changes in libcfa/src/stdlib.hfa [09ee131:03ecdcf]
- File:
-
- 1 edited
-
libcfa/src/stdlib.hfa (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/stdlib.hfa
r09ee131 r03ecdcf 10 10 // Created On : Thu Jan 28 17:12:35 2016 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Mon Jan 18 21:51:13 202113 // Update Count : 5 6912 // Last Modified On : Sat Dec 12 13:52:34 2020 13 // Update Count : 536 14 14 // 15 15 … … 163 163 S_fill(T) ret = { 't' }; 164 164 size_t size = sizeof(T); 165 if ( size > sizeof(ret.t) ) { 166 abort( "ERROR: const object of size greater than 50 bytes given for dynamic memory fill\n" ); 167 } // if 165 if(size > sizeof(ret.t)) { printf("ERROR: const object of size greater than 50 bytes given for dynamic memory fill\n"); exit(1); } 168 166 memcpy( &ret.t, &t, size ); 169 167 return ret; … … 175 173 S_realloc(T) ?`realloc ( T * a ) { return (S_realloc(T)){a}; } 176 174 177 T * $alloc_internal( void * Resize, T * Realloc, size_t Align, size_t Dim, S_fill(T) Fill ) {175 T * $alloc_internal( void * Resize, T * Realloc, size_t Align, size_t Dim, S_fill(T) Fill) { 178 176 T * ptr = NULL; 179 177 size_t size = sizeof(T); … … 183 181 ptr = (T*) (void *) resize( (void *)Resize, Align, Dim * size ); 184 182 } else if ( Realloc ) { 185 if ( Fill.tag != '0' ) copy_end = min(malloc_size( Realloc ), Dim * size);186 ptr = (T *) (void *) realloc( (void *)Realloc, Align, Dim * size );183 if (Fill.tag != '0') copy_end = min(malloc_size( Realloc ), Dim * size); 184 ptr = (T*) (void *) realloc( (void *)Realloc, Align, Dim * size ); 187 185 } else { 188 ptr = (T *) (void *) memalign( Align, Dim * size );189 } 190 191 if ( Fill.tag == 'c') {186 ptr = (T*) (void *) memalign( Align, Dim * size ); 187 } 188 189 if(Fill.tag == 'c') { 192 190 memset( (char *)ptr + copy_end, (int)Fill.c, Dim * size - copy_end ); 193 } else if ( Fill.tag == 't') {191 } else if(Fill.tag == 't') { 194 192 for ( int i = copy_end; i < Dim * size; i += size ) { 195 #pragma GCC diagnostic push 196 #pragma GCC diagnostic ignored "-Wmaybe-uninitialized" 197 memcpy( (char *)ptr + i, &Fill.t, sizeof(Fill.t) ); 198 #pragma GCC diagnostic pop 193 #pragma GCC diagnostic push 194 #pragma GCC diagnostic ignored "-Warray-bounds" 195 #pragma GCC diagnostic push 196 #pragma GCC diagnostic ignored "-Wstringop-overflow=" 197 memcpy( (char *)ptr + i, &Fill.t, size ); 198 #pragma GCC diagnostic pop 199 #pragma GCC diagnostic pop 199 200 } 200 } else if ( Fill.tag == 'a') {201 } else if(Fill.tag == 'a') { 201 202 memcpy( (char *)ptr + copy_end, Fill.at, min(Dim * size - copy_end, Fill.size) ); 202 } else if ( Fill.tag == 'T' ) { 203 memcpy( (char *)ptr + copy_end, Fill.at, Dim * size ); 203 } else if(Fill.tag == 'T') { 204 for ( int i = copy_end; i < Dim * size; i += size ) { 205 memcpy( (char *)ptr + i, Fill.at, size ); 206 } 204 207 } 205 208 … … 270 273 static inline forall( dtype T | sized(T), ttype TT | { void ?{}( T &, TT ); } ) 271 274 T * new( TT p ) { 272 return &(*(T *)malloc()){ p }; // run constructor275 return &(*(T *)malloc()){ p }; // run constructor 273 276 } // new 274 277
Note:
See TracChangeset
for help on using the changeset viewer.