1
0
Fork 0

Fix Nasal ‘removecommand’ so it actually works.

This commit is contained in:
James Turner 2020-08-25 19:23:43 +01:00
parent 55e971f808
commit 8a1109160b
2 changed files with 11 additions and 6 deletions

View file

@ -830,7 +830,11 @@ static naRef f_removeCommand(naContext c, naRef me, int argc, naRef* args)
if ((argc < 1) || !naIsString(args[0])) if ((argc < 1) || !naIsString(args[0]))
naRuntimeError(c, "bad argument to removecommand()"); naRuntimeError(c, "bad argument to removecommand()");
globals->get_commands()->removeCommand(naStr_data(args[0])); const string commandName(naStr_data(args[0]));
bool ok = nasalSys->removeCommand(commandName);
if (!ok) {
naRuntimeError(c, "Failed to remove command:%s", commandName.c_str());
}
return naNil(); return naNil();
} }
@ -1777,17 +1781,18 @@ void FGNasalSys::addCommand(naRef func, const std::string& name)
_commands[name] = cmd; _commands[name] = cmd;
} }
void FGNasalSys::removeCommand(const std::string& name) bool FGNasalSys::removeCommand(const std::string& name)
{ {
NasalCommandDict::iterator it = _commands.find(name); auto it = _commands.find(name);
if (it == _commands.end()) { if (it == _commands.end()) {
SG_LOG(SG_NASAL, SG_WARN, "remove of unknwon command:" << name); SG_LOG(SG_NASAL, SG_WARN, "remove of unknwon command:" << name);
return; return false;
} }
// will delete the NasalCommand instance // will delete the NasalCommand instance
globals->get_commands()->removeCommand(name); bool ok = globals->get_commands()->removeCommand(name);
_commands.erase(it); _commands.erase(it);
return ok;
} }
void FGNasalSys::addPersistentTimer(TimerObj* pto) void FGNasalSys::addPersistentTimer(TimerObj* pto)

View file

@ -95,7 +95,7 @@ public:
naRef getModule(const char* moduleName); naRef getModule(const char* moduleName);
void addCommand(naRef func, const std::string& name); void addCommand(naRef func, const std::string& name);
void removeCommand(const std::string& name); bool removeCommand(const std::string& name);
/** /**
* Set member of specified hash to given value * Set member of specified hash to given value