From 021910e5651d14d9ef9822489973cf5e14652020 Mon Sep 17 00:00:00 2001 From: Erik Boasson Date: Sun, 18 Aug 2019 21:01:16 +0200 Subject: [PATCH] Support creating a waitset without creating a node Signed-off-by: Erik Boasson --- rmw_cyclonedds_cpp/src/rmw_node.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/rmw_cyclonedds_cpp/src/rmw_node.cpp b/rmw_cyclonedds_cpp/src/rmw_node.cpp index de78e86..b465e27 100644 --- a/rmw_cyclonedds_cpp/src/rmw_node.cpp +++ b/rmw_cyclonedds_cpp/src/rmw_node.cpp @@ -1384,7 +1384,7 @@ extern "C" rmw_wait_set_t * rmw_create_wait_set(rmw_context_t * context, size_t goto fail_ws; } ws->inuse = false; - if ((ws->waitseth = dds_create_waitset(gcdds.ppant)) < 0) { + if ((ws->waitseth = dds_create_waitset(ref_ppant())) < 0) { RMW_SET_ERROR_MSG("failed to create waitset"); goto fail_waitset; } @@ -1395,6 +1395,7 @@ extern "C" rmw_wait_set_t * rmw_create_wait_set(rmw_context_t * context, size_t return wait_set; fail_waitset: + unref_ppant(); fail_ws: RMW_TRY_DESTRUCTOR_FROM_WITHIN_FAILURE(ws->~CddsWaitset(), ws); fail_placement_new: @@ -1416,6 +1417,7 @@ extern "C" rmw_ret_t rmw_destroy_wait_set(rmw_wait_set_t * wait_set) std::lock_guard lock(gcdds.lock); gcdds.waitsets.erase(ws); } + unref_ppant(); RMW_TRY_DESTRUCTOR(ws->~CddsWaitset(), ws, result = RMW_RET_ERROR); rmw_free(wait_set->data); rmw_wait_set_free(wait_set);