From 54f2a48ffa21a03a5155eb4d17b501d0112353a3 Mon Sep 17 00:00:00 2001 From: YZBruh Date: Fri, 15 Aug 2025 20:02:45 +0300 Subject: [PATCH] Reapply "fix memory leak" This reverts commit c3a5e97d41338ccdaad4b24f31bd90d5d4f46e0e. --- include/PartitionManager/PartitionManager.hpp | 10 ++++++++++ src/PartitionManager.cpp | 13 ++++++------- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/include/PartitionManager/PartitionManager.hpp b/include/PartitionManager/PartitionManager.hpp index c5d9f52..0ba01aa 100644 --- a/include/PartitionManager/PartitionManager.hpp +++ b/include/PartitionManager/PartitionManager.hpp @@ -70,6 +70,16 @@ public: bool forceProcess; }; +class protector final { +private: + basic_variables *_var = nullptr; + +public: + ~protector(); + + void setVariablePtr(basic_variables *&_var); +}; + using FunctionBase = basic_function; using FunctionManager = basic_function_manager; using VariableTable = basic_variables; diff --git a/src/PartitionManager.cpp b/src/PartitionManager.cpp index 0a71904..2a66b35 100644 --- a/src/PartitionManager.cpp +++ b/src/PartitionManager.cpp @@ -25,18 +25,15 @@ namespace PartitionManager { -__attribute__((constructor)) -void init() { +__attribute__((constructor)) void init() { Helper::LoggingProperties::setLogFile("/sdcard/Documents/last_pmt_logs.log"); } -__attribute__((destructor)) -void cleanup() { - delete Variables; -} - auto Variables = new VariableTable(); +void protector::setVariablePtr(basic_variables *&_var) { this->_var = _var; } +protector::~protector() { delete _var; } + basic_variables::~basic_variables() { delete PartMap; } basic_variables::basic_variables() : logFile(Helper::LoggingProperties::FILE), onLogical(false), @@ -52,6 +49,8 @@ int Main(int argc, char **argv) { try { // try-catch start CLI::App AppMain{"Partition Manager Tool"}; + protector prot; + prot.setVariablePtr(Variables); FunctionManager FuncManager; AppMain.fallthrough(true);