diff --git a/components/esp_modem/examples/modem_console/main/console_helper.cpp b/components/esp_modem/examples/modem_console/main/console_helper.cpp index 63e38d287..6adca8970 100644 --- a/components/esp_modem/examples/modem_console/main/console_helper.cpp +++ b/components/esp_modem/examples/modem_console/main/console_helper.cpp @@ -18,6 +18,16 @@ ConsoleCommand::ConsoleCommand(const char *command, const char *help, const std: RegisterCommand(command, help, args); } +ConsoleCommand::~ConsoleCommand() +{ + // Find this command in static list of commands and remove it + auto cmd = std::find(console_commands.begin(), console_commands.end(), this); + if (cmd != console_commands.end()) { + console_commands.erase(cmd); + last_command--; + } +} + void ConsoleCommand::RegisterCommand(const char *command, const char *help, const std::vector &args) { assert(last_command <= MAX_REPEAT_NR); diff --git a/components/esp_modem/examples/modem_console/main/console_helper.hpp b/components/esp_modem/examples/modem_console/main/console_helper.hpp index cd42d7444..cae138309 100644 --- a/components/esp_modem/examples/modem_console/main/console_helper.hpp +++ b/components/esp_modem/examples/modem_console/main/console_helper.hpp @@ -92,6 +92,11 @@ public: */ explicit ConsoleCommand(const char *command, const char *help, const std::vector &args, std::function f); + /** + * @brief Destructor of ConsoleCommand + */ + ~ConsoleCommand(); + /** * @brief Utility getters of various params from the argument list */