Re: wine/server: removed obsolete one-iteration loop from request forming macro (try 2)
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
participants (1)
-
Marcus Meissner