1
0
Fork 0

fgcommand remove-subsystem: fix double delete/segfault.

This commit is contained in:
Thomas Geymayer 2015-11-19 23:17:58 +01:00
parent f110fc57d6
commit fdf4a61ed5

View file

@ -202,23 +202,20 @@ do_add_subsystem (const SGPropertyNode * arg)
static bool do_remove_subsystem(const SGPropertyNode * arg)
{
std::string name = arg->getStringValue("subsystem");
SGSubsystem* instance = globals->get_subsystem_mgr()->get_subsystem(name);
if (!instance) {
SG_LOG(SG_GENERAL, SG_ALERT, "do_remove_subsystem: unknown subsytem:" << name);
return false;
}
// is it safe to always call these? let's assume so!
instance->shutdown();
instance->unbind();
// unplug from the manager
// unplug from the manager (this also deletes the instance!)
globals->get_subsystem_mgr()->remove(name.c_str());
// and finally kill off the instance.
delete instance;
return true;
}