diff --git a/ros/ros_comm/roscpp/include/ros/subscription.h b/ros/ros_comm/roscpp/include/ros/subscription.h index 5b01f08..dce5fdd 100644 --- a/ros/ros_comm/roscpp/include/ros/subscription.h +++ b/ros/ros_comm/roscpp/include/ros/subscription.h @@ -268,6 +268,7 @@ class ROSCPP_DECL Subscription : public boost::enable_shared_from_this get_publisher_links() { + boost::mutex::scoped_lock lock(publisher_links_mutex_); return publisher_links_; } }; diff --git a/ros/ros_comm/roscpp/src/libros/shm_manager.cpp b/ros/ros_comm/roscpp/src/libros/shm_manager.cpp index ccd15f5..663e212 100644 --- a/ros/ros_comm/roscpp/src/libros/shm_manager.cpp +++ b/ros/ros_comm/roscpp/src/libros/shm_manager.cpp @@ -136,7 +136,7 @@ void ShmManager::threadFunc() if (g_config_comm.topic_white_list.find(topic) != g_config_comm.topic_white_list.end() || shm_map_.find(topic) != shm_map_.end() || - (*it)->get_publisher_links().size() == 0) + (*it)->getNumPublishers() == 0) { continue; } @@ -243,7 +243,7 @@ void ShmManager::threadFunc() // Block needs to be allocated if (read_index == sharedmem_transport::ROS_SHM_SEGMENT_WROTE_NUM || - shm_map_[topic].shm_sub_ptr->get_publisher_links().size() == 0) + shm_map_[topic].shm_sub_ptr->getNumPublishers() == 0) { { boost::mutex::scoped_lock lock(shm_map_mutex_); diff --git a/ros/ros_comm/roscpp/src/libros/topic_manager.cpp b/ros/ros_comm/roscpp/src/libros/topic_manager.cpp index 08d4025..b9e9f57 100644 --- a/ros/ros_comm/roscpp/src/libros/topic_manager.cpp +++ b/ros/ros_comm/roscpp/src/libros/topic_manager.cpp @@ -229,6 +229,7 @@ SubscriptionPtr TopicManager::lookupSubscription(const std::string& topic) L_Subscription TopicManager::getAllSubscription() { + boost::mutex::scoped_lock lock(subs_mutex_); return subscriptions_ ; }