From 9fe2c02079c7827b503af3d5ead960f8b9a68660 Mon Sep 17 00:00:00 2001 From: Michael du Breuil Date: Wed, 4 Dec 2019 23:17:06 -0700 Subject: [PATCH] AP_Scripting: Don't restart scripts if it panic'd during the initial VM creation --- libraries/AP_Scripting/lua_scripts.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libraries/AP_Scripting/lua_scripts.cpp b/libraries/AP_Scripting/lua_scripts.cpp index ca4d24ffc0..596f611d78 100644 --- a/libraries/AP_Scripting/lua_scripts.cpp +++ b/libraries/AP_Scripting/lua_scripts.cpp @@ -304,6 +304,8 @@ void *lua_scripts::alloc(void *ud, void *ptr, size_t osize, size_t nsize) { } void lua_scripts::run(void) { + bool succeeded_initial_load = false; + if (_heap == nullptr) { gcs().send_text(MAV_SEVERITY_INFO, "Lua: Unable to allocate a heap"); return; @@ -311,6 +313,9 @@ void lua_scripts::run(void) { // panic should be hooked first if (setjmp(panic_jmp)) { + if (!succeeded_initial_load) { + return; + } if (lua_state != nullptr) { lua_close(lua_state); // shutdown the old state } @@ -349,6 +354,8 @@ void lua_scripts::run(void) { // Scan the filesystem in an appropriate manner and autostart scripts load_all_scripts_in_dir(L, SCRIPTING_DIRECTORY); + succeeded_initial_load = true; + while (AP_Scripting::get_singleton()->enabled()) { #if defined(AP_SCRIPTING_CHECKS) && AP_SCRIPTING_CHECKS >= 1 if (lua_gettop(L) != 0) {