From c5faa2936823096af704fac79139fea81d340410 Mon Sep 17 00:00:00 2001 From: Ruixiang Du Date: Thu, 2 Sep 2021 17:06:42 +0800 Subject: [PATCH] async_port: fixed resource release order issue in StopService() --- src/async_port/async_can.cpp | 8 ++++---- src/async_port/async_serial.cpp | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/async_port/async_can.cpp b/src/async_port/async_can.cpp index e88cab5..7343ee3 100644 --- a/src/async_port/async_can.cpp +++ b/src/async_port/async_can.cpp @@ -76,15 +76,15 @@ bool AsyncCAN::SetupPort() { } void AsyncCAN::StopService() { - // release port fd - const int close_result = ::close(can_fd_); - can_fd_ = -1; - // stop io thread io_context_.stop(); if (io_thread_.joinable()) io_thread_.join(); io_context_.reset(); + // release port fd + const int close_result = ::close(can_fd_); + can_fd_ = -1; + port_opened_ = false; } diff --git a/src/async_port/async_serial.cpp b/src/async_port/async_serial.cpp index fcd561d..bc1595a 100644 --- a/src/async_port/async_serial.cpp +++ b/src/async_port/async_serial.cpp @@ -71,16 +71,16 @@ bool AsyncSerial::SetupPort() { } void AsyncSerial::StopService() { - if (IsOpened()) { - serial_port_.cancel(); - serial_port_.close(); - } - // stop io thread io_context_.stop(); if (io_thread_.joinable()) io_thread_.join(); io_context_.reset(); + if (IsOpened()) { + serial_port_.cancel(); + serial_port_.close(); + } + port_opened_ = false; }