Changeset c84dd61 for libcfa/src/virtual_dtor.hfa
- Timestamp:
- Jun 21, 2023, 2:38:55 AM (2 years ago)
- Branches:
- master
- Children:
- 92355883
- Parents:
- 0b0a285 (diff), 2de175ce (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcfa/src/virtual_dtor.hfa
r0b0a285 rc84dd61 25 25 __virtual_obj_start = &this; 26 26 } 27 static inline void __CFA_dtor_shutdown( virtual_dtor & this ) with(this) { 27 static inline bool __CFA_dtor_shutdown( virtual_dtor & this ) with(this) { 28 if ( __virtual_dtor_ptr == 1p ) return true; // stop base dtors from being called twice 28 29 if ( __virtual_dtor_ptr ) { 29 30 void (*dtor_ptr)(virtual_dtor &) = __virtual_dtor_ptr; 30 31 __virtual_dtor_ptr = 0p; 31 dtor_ptr(*((virtual_dtor *)__virtual_obj_start)); // replace actor with base type 32 return; 32 dtor_ptr(*((virtual_dtor *)__virtual_obj_start)); // call most derived dtor 33 __virtual_dtor_ptr = 1p; // stop base dtors from being called twice 34 return true; 33 35 } 36 return false; 34 37 } 35 38 static inline void __CFA_virt_free( virtual_dtor & this ) { free( this.__virtual_obj_start ); }
Note:
See TracChangeset
for help on using the changeset viewer.