fgcommand remove-subsystem: fix double delete/segfault.
This commit is contained in:
parent
f110fc57d6
commit
fdf4a61ed5
1 changed files with 4 additions and 7 deletions
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue