Skip to content

Commit d721611

Browse files
hidmicahcorde
authored andcommitted
Minor fixes to rcl clock implementation. (#688)
Signed-off-by: Michel Hidalgo <[email protected]>
1 parent 41dbf4e commit d721611

File tree

1 file changed

+15
-25
lines changed

1 file changed

+15
-25
lines changed

rcl/src/rcl/time.c

Lines changed: 15 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -171,11 +171,8 @@ rcl_ros_clock_fini(
171171
return RCL_RET_ERROR;
172172
}
173173
rcl_clock_generic_fini(clock);
174-
if (!clock->data) {
175-
RCL_SET_ERROR_MSG("clock data invalid");
176-
return RCL_RET_ERROR;
177-
}
178-
clock->allocator.deallocate((rcl_ros_clock_storage_t *)clock->data, clock->allocator.state);
174+
clock->allocator.deallocate(clock->data, clock->allocator.state);
175+
clock->data = NULL;
179176
return RCL_RET_OK;
180177
}
181178

@@ -293,10 +290,8 @@ rcl_enable_ros_time_override(rcl_clock_t * clock)
293290
return RCL_RET_ERROR;
294291
}
295292
rcl_ros_clock_storage_t * storage = (rcl_ros_clock_storage_t *)clock->data;
296-
if (!storage) {
297-
RCL_SET_ERROR_MSG("Clock storage is not initialized, cannot enable override.");
298-
return RCL_RET_ERROR;
299-
}
293+
RCL_CHECK_FOR_NULL_WITH_MSG(
294+
storage, "Clock storage is not initialized, cannot enable override.", return RCL_RET_ERROR);
300295
if (!storage->active) {
301296
rcl_time_jump_t time_jump;
302297
time_jump.delta.nanoseconds = 0;
@@ -316,12 +311,9 @@ rcl_disable_ros_time_override(rcl_clock_t * clock)
316311
RCL_SET_ERROR_MSG("Clock is not of type RCL_ROS_TIME, cannot disable override.");
317312
return RCL_RET_ERROR;
318313
}
319-
rcl_ros_clock_storage_t * storage = \
320-
(rcl_ros_clock_storage_t *)clock->data;
321-
if (!storage) {
322-
RCL_SET_ERROR_MSG("Clock storage is not initialized, cannot disable override.");
323-
return RCL_RET_ERROR;
324-
}
314+
rcl_ros_clock_storage_t * storage = (rcl_ros_clock_storage_t *)clock->data;
315+
RCL_CHECK_FOR_NULL_WITH_MSG(
316+
storage, "Clock storage is not initialized, cannot enable override.", return RCL_RET_ERROR);
325317
if (storage->active) {
326318
rcl_time_jump_t time_jump;
327319
time_jump.delta.nanoseconds = 0;
@@ -344,12 +336,9 @@ rcl_is_enabled_ros_time_override(
344336
RCL_SET_ERROR_MSG("Clock is not of type RCL_ROS_TIME, cannot query override state.");
345337
return RCL_RET_ERROR;
346338
}
347-
rcl_ros_clock_storage_t * storage = \
348-
(rcl_ros_clock_storage_t *)clock->data;
349-
if (!storage) {
350-
RCL_SET_ERROR_MSG("Clock storage is not initialized, cannot query override state.");
351-
return RCL_RET_ERROR;
352-
}
339+
rcl_ros_clock_storage_t * storage = (rcl_ros_clock_storage_t *)clock->data;
340+
RCL_CHECK_FOR_NULL_WITH_MSG(
341+
storage, "Clock storage is not initialized, cannot enable override.", return RCL_RET_ERROR);
353342
*is_enabled = storage->active;
354343
return RCL_RET_OK;
355344
}
@@ -364,8 +353,10 @@ rcl_set_ros_time_override(
364353
RCL_SET_ERROR_MSG("Clock is not of type RCL_ROS_TIME, cannot set time override.");
365354
return RCL_RET_ERROR;
366355
}
367-
rcl_time_jump_t time_jump;
368356
rcl_ros_clock_storage_t * storage = (rcl_ros_clock_storage_t *)clock->data;
357+
RCL_CHECK_FOR_NULL_WITH_MSG(
358+
storage, "Clock storage is not initialized, cannot enable override.", return RCL_RET_ERROR);
359+
rcl_time_jump_t time_jump;
369360
if (storage->active) {
370361
time_jump.clock_change = RCL_ROS_TIME_NO_CHANGE;
371362
rcl_time_point_value_t current_time;
@@ -453,19 +444,18 @@ rcl_clock_remove_jump_callback(
453444
}
454445

455446
// Shrink size of the callback array
456-
if (clock->num_jump_callbacks == 1) {
447+
if (--(clock->num_jump_callbacks) == 0) {
457448
clock->allocator.deallocate(clock->jump_callbacks, clock->allocator.state);
458449
clock->jump_callbacks = NULL;
459450
} else {
460451
rcl_jump_callback_info_t * callbacks = clock->allocator.reallocate(
461-
clock->jump_callbacks, sizeof(rcl_jump_callback_info_t) * (clock->num_jump_callbacks - 1),
452+
clock->jump_callbacks, sizeof(rcl_jump_callback_info_t) * clock->num_jump_callbacks,
462453
clock->allocator.state);
463454
if (NULL == callbacks) {
464455
RCL_SET_ERROR_MSG("Failed to shrink jump callbacks");
465456
return RCL_RET_BAD_ALLOC;
466457
}
467458
clock->jump_callbacks = callbacks;
468459
}
469-
--(clock->num_jump_callbacks);
470460
return RCL_RET_OK;
471461
}

0 commit comments

Comments
 (0)