diff --git a/src/modules/mavlink/mavlink_main.cpp b/src/modules/mavlink/mavlink_main.cpp index e8120da53ced0fa1413ba643e283d82397a631f3..fded261c9cbe85c622aeaa6d245ea27374ea5432 100644 --- a/src/modules/mavlink/mavlink_main.cpp +++ b/src/modules/mavlink/mavlink_main.cpp @@ -739,7 +739,7 @@ int Mavlink::mavlink_open_uart(int baud, const char *uart_name) /* if this is a config link, stay here and wait for it to open */ if (_uart_fd < 0 && _mode == MAVLINK_MODE_CONFIG) { - int armed_fd = orb_subscribe(ORB_ID(actuator_armed)); + int armed_sub = orb_subscribe(ORB_ID(actuator_armed)); struct actuator_armed_s armed; /* get the system arming state and abort on arming */ @@ -747,26 +747,27 @@ int Mavlink::mavlink_open_uart(int baud, const char *uart_name) /* abort if an arming topic is published and system is armed */ bool updated = false; - orb_check(armed_fd, &updated); + orb_check(armed_sub, &updated); if (updated) { /* the system is now providing arming status feedback. * instead of timing out, we resort to abort bringing * up the terminal. */ - orb_copy(ORB_ID(actuator_armed), armed_fd, &armed); + orb_copy(ORB_ID(actuator_armed), armed_sub, &armed); if (armed.armed) { /* this is not an error, but we are done */ + orb_unsubscribe(armed_sub); return -1; } } usleep(100000); _uart_fd = ::open(uart_name, O_RDWR | O_NOCTTY); - }; + } - ::close(armed_fd); + orb_unsubscribe(armed_sub); } if (_uart_fd < 0) {