1
0
Fork 0

add error messages for invalid args to settimer()

This commit is contained in:
mfranz 2007-05-12 18:15:45 +00:00
parent baac43778e
commit 76e76bb95d
2 changed files with 10 additions and 5 deletions

View file

@ -259,7 +259,7 @@ static naRef f_fgcommand(naContext c, naRef me, int argc, naRef* args)
// FGNasalSys::setTimer(). See there for docs. // FGNasalSys::setTimer(). See there for docs.
static naRef f_settimer(naContext c, naRef me, int argc, naRef* args) static naRef f_settimer(naContext c, naRef me, int argc, naRef* args)
{ {
nasalSys->setTimer(argc, args); nasalSys->setTimer(c, argc, args);
return naNil(); return naNil();
} }
@ -612,15 +612,20 @@ bool FGNasalSys::handleCommand(const SGPropertyNode* arg)
// "saved" somehow lest they be inadvertently cleaned. In this case, // "saved" somehow lest they be inadvertently cleaned. In this case,
// they are inserted into a globals.__gcsave hash and removed on // they are inserted into a globals.__gcsave hash and removed on
// expiration. // expiration.
void FGNasalSys::setTimer(int argc, naRef* args) void FGNasalSys::setTimer(naContext c, int argc, naRef* args)
{ {
// Extract the handler, delta, and simtime arguments: // Extract the handler, delta, and simtime arguments:
naRef handler = argc > 0 ? args[0] : naNil(); naRef handler = argc > 0 ? args[0] : naNil();
if(!(naIsCode(handler) || naIsCCode(handler) || naIsFunc(handler))) if(!(naIsCode(handler) || naIsCCode(handler) || naIsFunc(handler))) {
naRuntimeError(c, "settimer() with invalid function argument");
return; return;
}
naRef delta = argc > 1 ? args[1] : naNil(); naRef delta = argc > 1 ? args[1] : naNil();
if(naIsNil(delta)) return; if(naIsNil(delta)) {
naRuntimeError(c, "settimer() with invalid time argument");
return;
}
bool simtime = (argc > 2 && naTrue(args[2])) ? false : true; bool simtime = (argc > 2 && naTrue(args[2])) ? false : true;

View file

@ -40,7 +40,7 @@ public:
FGNasalScript* parseScript(const char* src, const char* name=0); FGNasalScript* parseScript(const char* src, const char* name=0);
// Implementation of the settimer extension function // Implementation of the settimer extension function
void setTimer(int argc, naRef* args); void setTimer(naContext c, int argc, naRef* args);
// Implementation of the setlistener extension function // Implementation of the setlistener extension function
naRef setListener(naContext c, int argc, naRef* args); naRef setListener(naContext c, int argc, naRef* args);