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 <eb@ilities.com>
This commit is contained in:
		
							parent
							
								
									12e6946163
								
							
						
					
					
						commit
						f9219bb5fa
					
				
					 1 changed files with 26 additions and 26 deletions
				
			
		| 
						 | 
				
			
			@ -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;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue