blob: 7c24b76a2a3fbb76a498c4a5ca1a6ab56da907be (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include "NMWException.h"
DestructorChain* __global_destructor_chain;
extern void* __register_global_object(void* object, void* destructor, void* regmem) {
((DestructorChain*)regmem)->next = __global_destructor_chain;
((DestructorChain*)regmem)->destructor = destructor;
((DestructorChain*)regmem)->object = object;
__global_destructor_chain = (DestructorChain*)regmem;
return object;
}
void __destroy_global_chain(void) {
DestructorChain* iter;
while ((iter=__global_destructor_chain) != 0) {
__global_destructor_chain = iter->next;
DTORCALL_COMPLETE(iter->destructor, iter->object);
}
}
__declspec(section
".dtors") static void* const __destroy_global_chain_reference = __destroy_global_chain;
|