From f9219bb5fa2b49f9e6ba491b1277842fe51a0d3e Mon Sep 17 00:00:00 2001 From: Erik Boasson Date: Thu, 30 May 2019 10:31:10 +0200 Subject: [PATCH] Listener getters: set callback to 0 if listener is NULL The functions did not touch the callback pointer if a null pointer was passed in for the listener. That means one would have to initialize the out parameter before the call or manually check the listener pointer to know whether the callback point has a defined value following the call. That's asking for trouble. Thus, the decision to return a callback of 0 when no listener object is passed in. Signed-off-by: Erik Boasson --- src/core/ddsc/src/dds_listener.c | 52 ++++++++++++++++---------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/src/core/ddsc/src/dds_listener.c b/src/core/ddsc/src/dds_listener.c index ddfc5ca..eee9ef6 100644 --- a/src/core/ddsc/src/dds_listener.c +++ b/src/core/ddsc/src/dds_listener.c @@ -298,78 +298,78 @@ void dds_lset_subscription_matched (dds_listener_t * __restrict listener, dds_on void dds_lget_data_available (const dds_listener_t * __restrict listener, dds_on_data_available_fn *callback) { - if (callback && listener) - *callback = listener->on_data_available; + if (callback != NULL) + *callback = listener ? listener->on_data_available : 0; } void dds_lget_data_on_readers (const dds_listener_t * __restrict listener, dds_on_data_on_readers_fn *callback) { - if (callback && listener) - *callback = listener->on_data_on_readers; + if (callback) + *callback = listener ? listener->on_data_on_readers : 0; } void dds_lget_inconsistent_topic (const dds_listener_t * __restrict listener, dds_on_inconsistent_topic_fn *callback) { - if (callback && listener) - *callback = listener->on_inconsistent_topic; + if (callback) + *callback = listener ? listener->on_inconsistent_topic : 0; } void dds_lget_liveliness_changed (const dds_listener_t * __restrict listener, dds_on_liveliness_changed_fn *callback) { - if (callback && listener) - *callback = listener->on_liveliness_changed; + if (callback) + *callback = listener ? listener->on_liveliness_changed : 0; } void dds_lget_liveliness_lost (const dds_listener_t * __restrict listener, dds_on_liveliness_lost_fn *callback) { - if (callback && listener) - *callback = listener->on_liveliness_lost; + if (callback) + *callback = listener ? listener->on_liveliness_lost : 0; } void dds_lget_offered_deadline_missed (const dds_listener_t * __restrict listener, dds_on_offered_deadline_missed_fn *callback) { - if (callback && listener) - *callback = listener->on_offered_deadline_missed; + if (callback) + *callback = listener ? listener->on_offered_deadline_missed : 0; } void dds_lget_offered_incompatible_qos (const dds_listener_t * __restrict listener, dds_on_offered_incompatible_qos_fn *callback) { - if (callback && listener) - *callback = listener->on_offered_incompatible_qos; + if (callback) + *callback = listener ? listener->on_offered_incompatible_qos : 0; } void dds_lget_publication_matched (const dds_listener_t * __restrict listener, dds_on_publication_matched_fn *callback) { - if (callback && listener) - *callback = listener->on_publication_matched; + if (callback) + *callback = listener ? listener->on_publication_matched : 0; } void dds_lget_requested_deadline_missed (const dds_listener_t * __restrict listener, dds_on_requested_deadline_missed_fn *callback) { - if (callback && listener) - *callback = listener->on_requested_deadline_missed; + if (callback) + *callback = listener ? listener->on_requested_deadline_missed : 0; } void dds_lget_requested_incompatible_qos (const dds_listener_t * __restrict listener, dds_on_requested_incompatible_qos_fn *callback) { - if (callback && listener) - *callback = listener->on_requested_incompatible_qos; + if (callback) + *callback = listener ? listener->on_requested_incompatible_qos : 0; } void dds_lget_sample_lost (const dds_listener_t *__restrict listener, dds_on_sample_lost_fn *callback) { - if (callback && listener) - *callback = listener->on_sample_lost; + if (callback) + *callback = listener ? listener->on_sample_lost : 0; } void dds_lget_sample_rejected (const dds_listener_t *__restrict listener, dds_on_sample_rejected_fn *callback) { - if (callback && listener) - *callback = listener->on_sample_rejected; + if (callback) + *callback = listener ? listener->on_sample_rejected : 0; } void dds_lget_subscription_matched (const dds_listener_t * __restrict listener, dds_on_subscription_matched_fn *callback) { - if (callback && listener) - *callback = listener->on_subscription_matched; + if (callback) + *callback = listener ? listener->on_subscription_matched : 0; }