From fd26902e87ef63306ddd901f7f962f80f71a369f Mon Sep 17 00:00:00 2001 From: Maschell Date: Thu, 28 Apr 2022 20:26:23 +0200 Subject: [PATCH] Make sure to clean up open file handles when the SD Card was ejected --- src/main.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index d84fd23..d1746bc 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -99,6 +99,10 @@ void Cleanup() { } } +void SDCleanUpHandlesHandler() { + Cleanup(); +} + void SDAttachedHandler([[maybe_unused]] SDUtilsAttachStatus status) { if (!sTitleRebooting) { _SYSLaunchTitleWithStdArgsInNoSplash(OSGetTitleID(), nullptr); @@ -123,6 +127,9 @@ ON_APPLICATION_START() { if (SDUtils_AddAttachHandler(SDAttachedHandler) != SDUTILS_RESULT_SUCCESS) { DEBUG_FUNCTION_LINE_ERR("Failed to add AttachedHandler"); } + if (SDUtils_AddCleanUpHandlesHandler(SDCleanUpHandlesHandler) != SDUTILS_RESULT_SUCCESS) { + DEBUG_FUNCTION_LINE_ERR("Failed to add CleanUpHandlesHandler"); + } if (SDUtils_IsSdCardMounted(&sSDIsMounted) != SDUTILS_RESULT_SUCCESS) { DEBUG_FUNCTION_LINE_ERR("IsSdCardMounted failed"); } @@ -145,6 +152,7 @@ ON_APPLICATION_ENDS() { gInWiiUMenu = false; if (sSDUtilsInitDone) { SDUtils_RemoveAttachHandler(SDAttachedHandler); + SDUtils_RemoveCleanUpHandlesHandler(SDCleanUpHandlesHandler); SDUtils_DeInit(); sSDUtilsInitDone = false; }