diff --git a/aegisub/src/command/command.cpp b/aegisub/src/command/command.cpp index 6a89f5583..86b254df8 100644 --- a/aegisub/src/command/command.cpp +++ b/aegisub/src/command/command.cpp @@ -107,4 +107,11 @@ namespace cmd { init_tool(); init_video(); } + + void clear() { + for (std::map::iterator it = cmd_map.begin(); it != cmd_map.end(); ++it) { + delete it->second; + } + cmd_map.clear(); + } } diff --git a/aegisub/src/command/command.h b/aegisub/src/command/command.h index dcd75085b..027394c12 100644 --- a/aegisub/src/command/command.h +++ b/aegisub/src/command/command.h @@ -152,4 +152,7 @@ namespace cmd { /// Retrieve a Command object. /// @param Command object. Command* get(std::string const& name); + + /// Unregister all commands + void clear(); } // namespace cmd diff --git a/aegisub/src/main.cpp b/aegisub/src/main.cpp index ad5508016..0a063303a 100644 --- a/aegisub/src/main.cpp +++ b/aegisub/src/main.cpp @@ -334,6 +334,7 @@ int AegisubApp::OnExit() { delete config::mru; delete agi::hotkey::hotkey; delete config::path; + cmd::clear(); #ifdef WITH_AUTOMATION delete global_scripts;