Skip to content

Commit

Permalink
Fix a segfault when re-using wait set (#282)
Browse files Browse the repository at this point in the history
  • Loading branch information
nnmm authored Oct 11, 2022
1 parent 0533699 commit 0c26297
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 2 deletions.
2 changes: 1 addition & 1 deletion rclrs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ pub use wait::*;
///
/// [1]: crate::RclReturnCode
pub fn spin_once(node: &Node, timeout: Option<Duration>) -> Result<(), RclrsError> {
let mut wait_set = WaitSet::new_for_node(node)?;
let wait_set = WaitSet::new_for_node(node)?;
let ready_entities = wait_set.wait(timeout)?;

for ready_subscription in ready_entities.subscriptions {
Expand Down
2 changes: 1 addition & 1 deletion rclrs/src/wait.rs
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ impl WaitSet {
/// This list is not comprehensive, since further errors may occur in the `rmw` or `rcl` layers.
///
/// [1]: std::time::Duration::ZERO
pub fn wait(&mut self, timeout: Option<Duration>) -> Result<ReadyEntities, RclrsError> {
pub fn wait(mut self, timeout: Option<Duration>) -> Result<ReadyEntities, RclrsError> {
let timeout_ns = match timeout.map(|d| d.as_nanos()) {
None => -1,
Some(ns) if ns <= i64::MAX as u128 => ns as i64,
Expand Down

0 comments on commit 0c26297

Please sign in to comment.