diff --git a/source/FunctionAddressProvider.cpp b/source/FunctionAddressProvider.cpp index 4af59c4..e134e14 100644 --- a/source/FunctionAddressProvider.cpp +++ b/source/FunctionAddressProvider.cpp @@ -67,3 +67,12 @@ function_replacement_library_type_t FunctionAddressProvider::getTypeForHandle(OS return LIBRARY_OTHER; } +bool FunctionAddressProvider::resetHandle(OSDynLoad_Module handle) { + for (auto &rplHandle : rpl_handles) { + if (rplHandle.handle == handle) { + rplHandle.handle = nullptr; + return true; + } + } + return false; +} diff --git a/source/FunctionAddressProvider.h b/source/FunctionAddressProvider.h index 8f5fa9b..a86b960 100644 --- a/source/FunctionAddressProvider.h +++ b/source/FunctionAddressProvider.h @@ -18,6 +18,8 @@ public: function_replacement_library_type_t getTypeForHandle(OSDynLoad_Module toReset); + bool resetHandle(OSDynLoad_Module handle); + std::list rpl_handles = { {LIBRARY_AVM, "avm.rpl", nullptr}, {LIBRARY_CAMERA, "camera.rpl", nullptr}, diff --git a/source/main.cpp b/source/main.cpp index 2a50374..209f3f2 100644 --- a/source/main.cpp +++ b/source/main.cpp @@ -106,6 +106,7 @@ void notify_callback(OSDynLoad_Module module, } } } + gFunctionAddressProvider->resetHandle(module); CheckIfPatchedFunctionsAreStillInMemory(); } }