Changes in libcfa/src/interpose.cfa [851fd92:5ccee64]
- File:
-
- 1 edited
-
libcfa/src/interpose.cfa (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/interpose.cfa
r851fd92 r5ccee64 10 10 // Created On : Wed Mar 29 16:10:31 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Fri Mar 13 17:35:37202013 // Update Count : 1 7812 // Last Modified On : Mon Feb 17 10:18:53 2020 13 // Update Count : 166 14 14 // 15 15 16 16 #include <stdarg.h> // va_start, va_end 17 #include <stdio.h>18 17 #include <string.h> // strlen 19 18 #include <unistd.h> // _exit, getpid … … 144 143 void abort( const char fmt[], ... ) __attribute__(( format(printf, 1, 2), __nothrow__, __leaf__, __noreturn__ )); 145 144 void abort( bool signalAbort, const char fmt[], ... ) __attribute__(( format(printf, 2, 3), __nothrow__, __leaf__, __noreturn__ )); 146 void __abort( bool signalAbort, const char fmt[], va_list args ) __attribute__(( __nothrow__, __leaf__, __noreturn__ ));147 145 148 146 extern "C" { … … 154 152 va_list argp; 155 153 va_start( argp, fmt ); 156 __abort( false, fmt, argp );154 abort( false, fmt, argp ); 157 155 va_end( argp ); 158 156 } … … 220 218 } 221 219 222 // Cannot forward va_list. 223 void __abort( bool signalAbort, const char fmt[], va_list args ) { 220 void abort( bool signalAbort, const char fmt[], ... ) { 224 221 void * kernel_data = kernel_abort(); // must be done here to lock down kernel 225 222 int len; … … 231 228 232 229 assert( fmt ); 230 va_list args; 231 va_start( args, fmt ); 232 233 233 len = vsnprintf( abort_text, abort_text_size, fmt, args ); 234 va_end( args ); 234 235 __cfaabi_bits_write( STDERR_FILENO, abort_text, len ); 235 236 236 237 if ( fmt[strlen( fmt ) - 1] != '\n' ) { // add optional newline if missing at the end of the format text 237 __cfaabi_ bits_write( STDERR_FILENO,"\n", 1 );238 __cfaabi_dbg_write( "\n", 1 ); 238 239 } // if 239 240 kernel_abort_msg( kernel_data, abort_text, abort_text_size ); … … 247 248 va_list args; 248 249 va_start( args, fmt ); 249 __abort( false, fmt, args ); 250 // CONTROL NEVER REACHES HERE! 250 abort( false, fmt, args ); 251 251 va_end( args ); 252 }253 254 void abort( bool signalAbort, const char fmt[], ... ) {255 va_list args;256 va_start( args, fmt );257 __abort( signalAbort, fmt, args );258 // CONTROL NEVER REACHES HERE!259 va_end( args );260 252 } 261 253
Note:
See TracChangeset
for help on using the changeset viewer.