@@ -65,6 +65,7 @@ rmw_create_subscription(
65
65
{
66
66
(void )subscription_options ;
67
67
68
+ rmw_uxrce_subscription_t * custom_subscription = NULL ;
68
69
rmw_subscription_t * rmw_subscription = NULL ;
69
70
if (!node ) {
70
71
RMW_UROS_TRACE_MESSAGE ("node handle is null" )
@@ -85,10 +86,10 @@ rmw_create_subscription(
85
86
RMW_UROS_TRACE_MESSAGE ("Not available memory node" )
86
87
return NULL ;
87
88
}
88
- rmw_uxrce_subscription_t * custom_subscription = (rmw_uxrce_subscription_t * )memory_node -> data ;
89
+ custom_subscription = (rmw_uxrce_subscription_t * )memory_node -> data ;
89
90
90
91
rmw_subscription = & custom_subscription -> rmw_subscription ;
91
- rmw_subscription -> data = NULL ;
92
+ rmw_subscription -> data = custom_subscription ;
92
93
rmw_subscription -> implementation_identifier = rmw_get_implementation_identifier ();
93
94
rmw_subscription -> topic_name = custom_subscription -> topic_name ;
94
95
if ((strlen (topic_name ) + 1 ) > sizeof (custom_subscription -> topic_name )) {
@@ -159,7 +160,6 @@ rmw_create_subscription(
159
160
custom_node -> context , custom_node -> context -> creation_stream , subscriber_req ,
160
161
custom_node -> context -> creation_timeout ))
161
162
{
162
- put_memory (& subscription_memory , & custom_subscription -> mem );
163
163
goto fail ;
164
164
}
165
165
@@ -198,12 +198,9 @@ rmw_create_subscription(
198
198
custom_node -> context -> creation_timeout ))
199
199
{
200
200
RMW_UROS_TRACE_MESSAGE ("Issues creating Micro XRCE-DDS entities" )
201
- put_memory (& subscription_memory , & custom_subscription -> mem );
202
201
goto fail ;
203
202
}
204
203
205
- rmw_subscription -> data = custom_subscription ;
206
-
207
204
uxrDeliveryControl delivery_control ;
208
205
delivery_control .max_samples = UXR_MAX_SAMPLES_UNLIMITED ;
209
206
delivery_control .min_pace_period = 0 ;
@@ -223,6 +220,10 @@ rmw_create_subscription(
223
220
return rmw_subscription ;
224
221
225
222
fail :
223
+ if (custom_subscription != NULL && custom_subscription -> topic != NULL ) {
224
+ rmw_uxrce_fini_topic_memory (custom_subscription -> topic );
225
+ }
226
+
226
227
rmw_uxrce_fini_subscription_memory (rmw_subscription );
227
228
rmw_subscription = NULL ;
228
229
return rmw_subscription ;
0 commit comments