Skip to content

Commit d0d12f7

Browse files
authored
Check waitable for nullptr during constructor (#1315)
Signed-off-by: Stephen Brawner <[email protected]>
1 parent 1be58c0 commit d0d12f7

File tree

1 file changed

+11
-1
lines changed

1 file changed

+11
-1
lines changed

rclcpp/include/rclcpp/wait_set_policies/detail/storage_policy_common.hpp

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,17 @@ class StoragePolicyCommon
7373
size_t services_from_waitables = 0;
7474
size_t events_from_waitables = 0;
7575
for (const auto & waitable_entry : waitables) {
76-
rclcpp::Waitable & waitable = *waitable_entry.waitable.get();
76+
auto waitable_ptr_pair = get_raw_pointer_from_smart_pointer(waitable_entry.waitable);
77+
if (nullptr == waitable_ptr_pair.second) {
78+
if (HasStrongOwnership) {
79+
throw std::runtime_error("unexpected condition, fixed storage policy needs pruning");
80+
}
81+
// Flag for pruning.
82+
needs_pruning_ = true;
83+
continue;
84+
}
85+
86+
rclcpp::Waitable & waitable = *waitable_ptr_pair.second;
7787
subscriptions_from_waitables += waitable.get_number_of_ready_subscriptions();
7888
guard_conditions_from_waitables += waitable.get_number_of_ready_guard_conditions();
7989
timers_from_waitables += waitable.get_number_of_ready_timers();

0 commit comments

Comments
 (0)