From: Toni Wilen Date: Wed, 18 Jan 2023 17:52:35 +0000 (+0200) Subject: Clean up filesystem and bsdsocket emulation earlier. X-Git-Tag: 41010~7 X-Git-Url: https://git.unchartedbackwaters.co.uk/w/?a=commitdiff_plain;h=243264fd99eb1bf9ad7c1d1a5d525031ab61cae2;p=francis%2Fwinuae.git Clean up filesystem and bsdsocket emulation earlier. --- diff --git a/devices.cpp b/devices.cpp index 0e821573..a7390955 100644 --- a/devices.cpp +++ b/devices.cpp @@ -289,6 +289,12 @@ void virtualdevice_free(void) #ifdef WITH_PPC // must be first uae_ppc_free(); +#endif +#ifdef FILESYS + filesys_cleanup(); +#endif +#ifdef BSDSOCKET + bsdlib_reset(); #endif free_traps(); sampler_free(); @@ -300,12 +306,6 @@ void virtualdevice_free(void) #endif #ifdef AUTOCONFIG expansion_cleanup(); -#endif -#ifdef FILESYS - filesys_cleanup(); -#endif -#ifdef BSDSOCKET - bsdlib_reset(); #endif device_func_free(); #ifdef WITH_LUA diff --git a/filesys.cpp b/filesys.cpp index b9c2201b..318af008 100644 --- a/filesys.cpp +++ b/filesys.cpp @@ -7356,6 +7356,17 @@ void filesys_free_handles (void) } } +static void free_shellexecute(void) +{ + shell_execute_data = 0; + shell_execute_process = 0; + shellexecute2_queued = 0; + for (int i = 0; i < SHELLEXEC_MAX; i++) { + struct ShellExecute2 *se2 = &shellexecute2[i]; + shellexecute2_free(se2); + } +} + static void filesys_reset2 (void) { Unit *u, *u1; @@ -7379,14 +7390,7 @@ void filesys_reset (void) load_injected_icons(); filesys_reset2 (); initialize_mountinfo (); - - shell_execute_data = 0; - shell_execute_process = 0; - shellexecute2_queued = 0; - for (int i = 0; i < SHELLEXEC_MAX; i++) { - struct ShellExecute2 *se2 = &shellexecute2[i]; - shellexecute2_free(se2); - } + free_shellexecute(); } static void filesys_prepare_reset2 (void) @@ -9354,12 +9358,15 @@ void filesys_vsync (void) void filesys_cleanup(void) { + filesys_prepare_reset(); + filesys_reset2(); filesys_free_handles(); free_mountinfo(); destroy_comm_pipe(&shellexecute_pipe); uae_sem_destroy(&singlethread_int_sem); uae_sem_destroy(&shellexec_sem); shell_execute_data = 0; + free_shellexecute(); } void filesys_install (void)