diff options
Diffstat (limited to 'src/lib/dlt_user.c')
-rw-r--r-- | src/lib/dlt_user.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/lib/dlt_user.c b/src/lib/dlt_user.c index 66ffd0b..cb7f570 100644 --- a/src/lib/dlt_user.c +++ b/src/lib/dlt_user.c @@ -922,11 +922,18 @@ DltReturnValue dlt_free(void) * Ignore errors from these, to not to spam user if dlt_free * is accidentally called multiple times. */ - mq_close(dlt_user.dlt_segmented_queue_write_handle); - mq_close(dlt_user.dlt_segmented_queue_read_handle); - dlt_user.dlt_segmented_queue_write_handle = -1; - dlt_user.dlt_segmented_queue_read_handle = -1; - mq_unlink(queue_name); + if (dlt_user.dlt_segmented_queue_write_handle > 0) + mq_close(dlt_user.dlt_segmented_queue_write_handle); + + if (dlt_user.dlt_segmented_queue_read_handle > 0) + mq_close(dlt_user.dlt_segmented_queue_read_handle); + + if ((dlt_user.dlt_segmented_queue_write_handle > 0) || + (dlt_user.dlt_segmented_queue_read_handle > 0)) + mq_unlink(queue_name); + + dlt_user.dlt_segmented_queue_write_handle = DLT_FD_INIT; + dlt_user.dlt_segmented_queue_read_handle = DLT_FD_INIT; pthread_cond_destroy(&mq_init_condition); pthread_mutex_destroy(&mq_mutex); |