diff --git a/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp b/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp index f1c2d6398b..f90677a7ce 100644 --- a/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp +++ b/libraries/AP_HAL_SITL/HAL_SITL_Class.cpp @@ -3,6 +3,7 @@ #if CONFIG_HAL_BOARD == HAL_BOARD_SITL #include +#include #include "AP_HAL_SITL.h" #include "AP_HAL_SITL_Namespace.h" @@ -69,6 +70,8 @@ HAL_SITL::HAL_SITL() : _sitl_state(&sitlState) {} +static char *new_argv[100]; + void HAL_SITL::run(int argc, char * const argv[], Callbacks* callbacks) const { assert(callbacks); @@ -90,8 +93,18 @@ void HAL_SITL::run(int argc, char * const argv[], Callbacks* callbacks) const callbacks->loop(); HALSITL::Scheduler::_run_io_procs(); } - execv(argv[0], argv); - AP_HAL::panic("PANIC: REBOOT FAILED"); + + // form a new argv, removing problem parameters + uint8_t new_argv_offset = 0; + for (uint8_t i=0; i