diff --git a/src/bitlash-interpreter.c b/src/bitlash-interpreter.c index 49abcbe..25f8532 100644 --- a/src/bitlash-interpreter.c +++ b/src/bitlash-interpreter.c @@ -322,7 +322,10 @@ numvar retval = 0; } else #endif - stopTask(getnum()); + if (sym == s_script_eeprom) + stopTaskByName(idbuf); + else + stopTask(getnum()); } else if (sym == s_rm) { // rm "sym" or rm * diff --git a/src/bitlash-taskmgr.c b/src/bitlash-taskmgr.c index 6fef279..302dce8 100644 --- a/src/bitlash-taskmgr.c +++ b/src/bitlash-taskmgr.c @@ -58,6 +58,20 @@ void initTaskList(void) { void stopTask(byte slot) { if (slot < NUMTASKS) tasklist[slot] = SLOT_FREE; } +void stopTaskByName(char *taskName) +{ + int entryID = findKey(taskName); + + if (entryID == -1) // not found + return; + + for (byte slot = 0; slot < NUMTASKS; slot++) + { + if (tasklist[slot] == entryID) + stopTask(slot); + } +} + // add task to run list void startTask(int macroid, numvar snoozems) { byte slot; diff --git a/src/bitlash.h b/src/bitlash.h index 3616d23..8776db2 100644 --- a/src/bitlash.h +++ b/src/bitlash.h @@ -624,6 +624,7 @@ numvar func_printf_handler(byte, byte); // void initTaskList(void); void runBackgroundTasks(void); +void stopTaskByName(char *taskName); void stopTask(byte); void startTask(int, numvar); void snooze(unumvar);