avoid using atexit in a Windows dll; potential fix for
@@ -446,7 +446,9 @@ static void mi_process_load(void) {
MI_UNUSED(dummy);
#endif
os_preloading = false;
+ #if !(defined(_WIN32) && defined(MI_SHARED_LIB)) // use Dll process detach (see below) instead of atexit (issue #521)
atexit(&mi_process_done);
+ #endif
_mi_options_init();
mi_process_init();
//mi_stats_reset();-
@@ -558,8 +560,13 @@ static void mi_process_done(void) {
if (reason==DLL_PROCESS_ATTACH) {
mi_process_load();
}
+ else if (reason==DLL_PROCESS_DETACH) {
+ mi_process_done();
+ }
else if (reason==DLL_THREAD_DETACH) {
- if (!mi_is_redirected()) mi_thread_done();
+ if (!mi_is_redirected()) {
+ mi_thread_done();
+ }
}
return TRUE;
}
