Skip to content

Commit f38cd8a

Browse files
authored
Fix error when using IPC with StaticSingleThreadExecutor (ros2#1520)
Signed-off-by: Mauro Passerino <[email protected]>
1 parent 064a021 commit f38cd8a

File tree

2 files changed

+5
-5
lines changed

2 files changed

+5
-5
lines changed

rclcpp/src/rclcpp/executors/static_executor_entities_collector.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -323,8 +323,7 @@ StaticExecutorEntitiesCollector::add_callback_group(
323323
throw std::runtime_error("Callback group was already added to executor.");
324324
}
325325
if (is_new_node) {
326-
rclcpp::node_interfaces::NodeBaseInterface::WeakPtr node_weak_ptr(node_ptr);
327-
weak_nodes_to_guard_conditions_[node_weak_ptr] = node_ptr->get_notify_guard_condition();
326+
weak_nodes_to_guard_conditions_[node_ptr] = node_ptr->get_notify_guard_condition();
328327
return true;
329328
}
330329
return false;

rclcpp/src/rclcpp/executors/static_single_threaded_executor.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,10 @@ StaticSingleThreadedExecutor::execute_ready_executables()
175175
}
176176
// Execute all the ready waitables
177177
for (size_t i = 0; i < entities_collector_->get_number_of_waitables(); ++i) {
178-
if (entities_collector_->get_waitable(i)->is_ready(&wait_set_)) {
179-
std::shared_ptr<void> shared_ptr;
180-
entities_collector_->get_waitable(i)->execute(shared_ptr);
178+
auto waitable = entities_collector_->get_waitable(i);
179+
if (waitable->is_ready(&wait_set_)) {
180+
auto data = waitable->take_data();
181+
waitable->execute(data);
181182
}
182183
}
183184
}

0 commit comments

Comments
 (0)