Changeset 13600e8 for libcfa/src/exception.c
- Timestamp:
- Aug 10, 2023, 10:24:06 PM (15 months ago)
- Branches:
- master
- Children:
- 09a767e
- Parents:
- 7839f78
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/exception.c
r7839f78 r13600e8 10 10 // Created On : Mon Jun 26 15:13:00 2017 11 11 // Last Modified By : Peter A. Buhr 12 // Last Modified On : Thu Jul 27 09:45:57202313 // Update Count : 3712 // Last Modified On : Thu Aug 10 16:45:22 2023 13 // Update Count : 69 14 14 // 15 15 … … 27 27 #include "stdhdr/assert.h" 28 28 #include "virtual.h" 29 30 extern void __cabi_abort( const char fmt[], ... ); 29 31 30 32 #pragma GCC visibility push(default) … … 192 194 193 195 if ( actions & _UA_END_OF_STACK ) { 194 abort(); 196 __cabi_abort( 197 "Propagation failed to find a matching handler.\n" 198 "Possible cause is a missing try block with appropriate catch clause for specified exception type.\n" 199 "Last exception name or message: %s.\n", 200 NODE_TO_EXCEPT( UNWIND_TO_NODE( unwind_exception ) )-> 201 virtual_table->msg( NODE_TO_EXCEPT( UNWIND_TO_NODE( unwind_exception ) ) ) 202 ); 195 203 } else { 196 204 return _URC_NO_REASON; … … 209 217 struct exception_context_t * context = this_exception_context(); 210 218 struct __cfaehm_node * node = EXCEPT_TO_NODE(context->current_exception); 211 212 // Preform clean-up of any extra active exceptions.213 while ( node->next ) {214 struct __cfaehm_node * to_free = node->next;215 node->next = to_free->next;216 exception_t * except = NODE_TO_EXCEPT( to_free );217 except->virtual_table->free( except );218 free( to_free );219 }220 219 221 220 _Unwind_Reason_Code ret;
Note: See TracChangeset
for help on using the changeset viewer.