[Openais] Maybe clean up poll_dispatch_delete a bit

Steven Dake sdake at redhat.com
Fri Apr 14 19:56:51 PDT 2006


Looking at the code it is either broken or suboptimal.  I'm on vacation
until Monday (trying to stay away from the computer for family holiday:)
but I promise Monday I'll have a look at your patch in detail.

On Fri, 2006-04-14 at 07:55 -0400, Jeff wrote:
> Hello folks,
> 
> We are looking at the openais library as a possible transport for a
> project we are undertaking and so I've been reading a bit of the code.
> It struck me that poll_dispatch_delete() in exec/aispoll.c could be
> tightened up a bit. The 2nd "if (found)" block was being executed even
> if the search loop preceeding it did not find a match as long as the
> 1st search loop did. It may be that this is an impossible state, but
> the code implies otherwise.
> 
> It wasn't clear to me whether poll_dispatch_delete() should return 0
> if either loop finds a match or only if both do so I preserved the
> existing behavior.
> 
> --- exec/aispoll.c	2006-04-13 15:15:06.000000000 -0400
> +++ execnew/aispoll.c	2006-04-14 07:40:48.897448000 -0400
> @@ -250,8 +250,7 @@
>  	struct poll_instance *poll_instance;
>  	int i;
>  	SaErrorT error;
> -	int found = 0;
> -	int res = 0;
> +	int res;
> 
>  	error = saHandleInstanceGet (&poll_instance_database, handle,
>  		(void *)&poll_instance);
> @@ -263,33 +262,25 @@
>  	/*
>  	 * Find dispatch fd to delete
>  	 */
> +	res = -EBADF;
>  	for (i = 0; i < poll_instance->poll_entry_count; i++) {
>  		if (poll_instance->poll_entries[i].ufd.fd == fd) {
> -			found = 1;
> +		        poll_instance->poll_entries[i].ufd.fd = -1;
> +			poll_instance->poll_entries[i].ufd.revents = 0;
> +			res = 0;
>  			break;
>  		}
>  	}
> 
> -	if (found) {
> -		poll_instance->poll_entries[i].ufd.fd = -1;
> -		poll_instance->poll_entries[i].ufd.revents = 0;
> -	}
> -
>  	for (i = 0; i < poll_instance->poll_entry_count; i++) {
>  		if (poll_instance->ufds[i].fd == fd) {
> -			found = 1;
> +		        poll_instance->ufds[i].fd = -1;
> +			poll_instance->ufds[i].revents = 0;
> +			res = 0;
>  			break;
>  		}
>  	}
> 
> -	res = -EBADF;
> -	if (found) {
> -		poll_instance->ufds[i].fd = -1;
> -		poll_instance->ufds[i].revents = 0;
> -		res = 0;
> -	}
> -
> -
>  	saHandleInstancePut (&poll_instance_database, handle);
> 
>  error_exit:
> 
> _______________________________________________
> Openais mailing list
> Openais at lists.osdl.org
> https://lists.osdl.org/mailman/listinfo/openais




More information about the Openais mailing list