wine/server: removed obsolete one-iteration loop from request forming macro (try 2)

Marcus Meissner meissner at suse.de
Thu Aug 23 03:05:26 CDT 2012


On Thu, Aug 23, 2012 at 11:14:23AM +0400, Oleg Yarigin wrote:
> An original message was sent with wrong author`s name by mistake, so
> I resend this patch with hope it was the only reason to reject it.

It was not the only reason.

A single loop is a common pattern in C to allow safe encapsulation
and handling of blocks, or doing "break;"/"continue;" style things.

One thing that it allows here in Wine is that the variable definitions
are at the begin of a { } block and not in the middle of the code
to allow old C standard builds to work still.

There is no "break;" usage, although I spotted 1 "goto done;" which
could be just a break; ;)

The compiler will optimize everything of those loops away, so this change
also brings no performance improvement.

Ciao, Marcus
 

> ---
>  include/wine/server.h |   22 +++++++++-------------
>  1 file changed, 9 insertions(+), 13 deletions(-)
> 
> diff --git a/include/wine/server.h b/include/wine/server.h
> index d573d1f..dcbc7fa 100644
> --- a/include/wine/server.h
> +++ b/include/wine/server.h
> @@ -124,19 +124,15 @@ static inline void *wine_server_get_ptr( client_ptr_t ptr )
>  /* macros for server requests */
>  
>  #define SERVER_START_REQ(type) \
> -    do { \
> -        struct __server_request_info __req; \
> -        struct type##_request * const req = &__req.u.req.type##_request; \
> -        const struct type##_reply * const reply = &__req.u.reply.type##_reply; \
> -        memset( &__req.u.req, 0, sizeof(__req.u.req) ); \
> -        __req.u.req.request_header.req = REQ_##type; \
> -        __req.data_count = 0; \
> -        (void)reply; \
> -        do
> -
> -#define SERVER_END_REQ \
> -        while(0); \
> -    } while(0)
> +    struct __server_request_info __req; \
> +    struct type##_request * const req = &__req.u.req.type##_request; \
> +    const struct type##_reply * const reply = &__req.u.reply.type##_reply; \
> +    memset( &__req.u.req, 0, sizeof(__req.u.req) ); \
> +    __req.u.req.request_header.req = REQ_##type; \
> +    __req.data_count = 0; \
> +    (void)reply;
> +
> +#define SERVER_END_REQ
>  
>  
>  #endif  /* __WINE_WINE_SERVER_H */
> -- 1.7.9.5
> 

> 


-- 
Open Linux Security Engineer Position at SUSE: http://bit.ly/Li4RbS



More information about the wine-devel mailing list