From c38066f01dd228c1ddaaa51412a56d4dd39de761 Mon Sep 17 00:00:00 2001 From: Nir Date: Wed, 20 Mar 2024 11:57:02 +0200 Subject: [PATCH 1/6] fix static analysis issue 1 --- realsense2_camera/src/base_realsense_node.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/realsense2_camera/src/base_realsense_node.cpp b/realsense2_camera/src/base_realsense_node.cpp index 0202e4e70b..6928ed9d04 100755 --- a/realsense2_camera/src/base_realsense_node.cpp +++ b/realsense2_camera/src/base_realsense_node.cpp @@ -34,7 +34,11 @@ SyncedImuPublisher::SyncedImuPublisher(rclcpp::Publisher: SyncedImuPublisher::~SyncedImuPublisher() { - PublishPendingMessages(); + try + { + PublishPendingMessages(); + } + catch(...){} // Not allowed to throw from Dtor } void SyncedImuPublisher::Publish(sensor_msgs::msg::Imu imu_msg) From 9b8cb5e66eea5d5049d8aa1175864ae552c2f522 Mon Sep 17 00:00:00 2001 From: Nir Date: Wed, 20 Mar 2024 12:07:24 +0200 Subject: [PATCH 2/6] fix static analysis issue 2 --- realsense2_camera/src/base_realsense_node.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/realsense2_camera/src/base_realsense_node.cpp b/realsense2_camera/src/base_realsense_node.cpp index 6928ed9d04..5b5e6f9dac 100755 --- a/realsense2_camera/src/base_realsense_node.cpp +++ b/realsense2_camera/src/base_realsense_node.cpp @@ -153,10 +153,13 @@ BaseRealSenseNode::~BaseRealSenseNode() _monitoring_pc->join(); } clearParameters(); - for(auto&& sensor : _available_ros_sensors) + try { - sensor->stop(); - } + for(auto&& sensor : _available_ros_sensors) + { + sensor->stop(); + } + catch(...){} // Not allowed to throw from Dtor } void BaseRealSenseNode::hardwareResetRequest() From 49cfc09eba28e3d89ed533f4ee6f940fbc741fd3 Mon Sep 17 00:00:00 2001 From: Nir Date: Wed, 20 Mar 2024 12:19:06 +0200 Subject: [PATCH 3/6] fix static analysis issue 3 --- realsense2_camera/src/ros_sensor.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/realsense2_camera/src/ros_sensor.cpp b/realsense2_camera/src/ros_sensor.cpp index 35a4ef8ca3..0a26f85937 100644 --- a/realsense2_camera/src/ros_sensor.cpp +++ b/realsense2_camera/src/ros_sensor.cpp @@ -78,8 +78,12 @@ RosSensor::RosSensor(rs2::sensor sensor, RosSensor::~RosSensor() { - clearParameters(); - stop(); + try + { + clearParameters(); + stop(); + } + catch(...){} // Not allowed to throw from Dtor } void RosSensor::setParameters(bool is_rosbag_file) From 99873aaaf3a657ab2c69ec8875cb604d92e9a4f0 Mon Sep 17 00:00:00 2001 From: Nir Date: Wed, 20 Mar 2024 13:52:38 +0200 Subject: [PATCH 4/6] fix resource leak --- realsense2_camera/src/profile_manager.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/realsense2_camera/src/profile_manager.cpp b/realsense2_camera/src/profile_manager.cpp index 95dadbbad6..25b11d110e 100644 --- a/realsense2_camera/src/profile_manager.cpp +++ b/realsense2_camera/src/profile_manager.cpp @@ -39,7 +39,9 @@ std::string applyTemplateName(std::string template_name, stream_index_pair sip) const std::string stream_name(create_graph_resource_name(STREAM_NAME(sip))); char* param_name = new char[template_name.size() + stream_name.size()]; sprintf(param_name, template_name.c_str(), stream_name.c_str()); - return std::string(param_name); + std::string full_name(param_name); + delete [] param_name; + return full_name; } void ProfilesManager::registerSensorQOSParam(std::string template_name, From 6db887411a216be3e30e1f63512bd9ddb6ae6e01 Mon Sep 17 00:00:00 2001 From: Nir Date: Wed, 20 Mar 2024 14:18:56 +0200 Subject: [PATCH 5/6] fix empty warning --- realsense2_camera/src/base_realsense_node.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/realsense2_camera/src/base_realsense_node.cpp b/realsense2_camera/src/base_realsense_node.cpp index 5b5e6f9dac..97360905cf 100755 --- a/realsense2_camera/src/base_realsense_node.cpp +++ b/realsense2_camera/src/base_realsense_node.cpp @@ -650,7 +650,11 @@ void BaseRealSenseNode::multiple_message_callback(rs2::frame frame, imu_sync_met bool BaseRealSenseNode::setBaseTime(double frame_time, rs2_timestamp_domain time_domain) { - ROS_WARN_ONCE(time_domain == RS2_TIMESTAMP_DOMAIN_SYSTEM_TIME ? "Frame metadata isn't available! (frame_timestamp_domain = RS2_TIMESTAMP_DOMAIN_SYSTEM_TIME)" : ""); + if (time_domain == RS2_TIMESTAMP_DOMAIN_SYSTEM_TIME) + { + ROS_WARN_ONCE("Frame metadata isn't available! (frame_timestamp_domain = RS2_TIMESTAMP_DOMAIN_SYSTEM_TIME)"); + } + if (time_domain == RS2_TIMESTAMP_DOMAIN_HARDWARE_CLOCK) { ROS_WARN("frame's time domain is HARDWARE_CLOCK. Timestamps may reset periodically."); From f1a421396091032b106b6da5720e7a1722a526db Mon Sep 17 00:00:00 2001 From: Nir Date: Wed, 20 Mar 2024 14:34:54 +0200 Subject: [PATCH 6/6] fixup! fix static analysis issue 2 --- realsense2_camera/src/base_realsense_node.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/realsense2_camera/src/base_realsense_node.cpp b/realsense2_camera/src/base_realsense_node.cpp index 97360905cf..617acce5a9 100755 --- a/realsense2_camera/src/base_realsense_node.cpp +++ b/realsense2_camera/src/base_realsense_node.cpp @@ -159,6 +159,7 @@ BaseRealSenseNode::~BaseRealSenseNode() { sensor->stop(); } + } catch(...){} // Not allowed to throw from Dtor } @@ -654,7 +655,7 @@ bool BaseRealSenseNode::setBaseTime(double frame_time, rs2_timestamp_domain time { ROS_WARN_ONCE("Frame metadata isn't available! (frame_timestamp_domain = RS2_TIMESTAMP_DOMAIN_SYSTEM_TIME)"); } - + if (time_domain == RS2_TIMESTAMP_DOMAIN_HARDWARE_CLOCK) { ROS_WARN("frame's time domain is HARDWARE_CLOCK. Timestamps may reset periodically.");