[ovs-dev] [minor fixes 6/6] vlog: Fix VLOG and VLOG_RL macros' treatment of LEVEL argument.

Ethan Jackson ethan at nicira.com
Mon Apr 18 18:15:37 UTC 2011


Looks Good.

Ethan

On Mon, Apr 11, 2011 at 11:02 AM, Ben Pfaff <blp at nicira.com> wrote:
> These macros expanded the LEVEL argument without protecting it with
> parentheses, which meant that an argument like 'cond ? VLL_DBG : VLL_WARN'
> did not have the desired effect (and caused a GCC warning).
>
> This commit fixes the problem and avoids expanding LEVEL more than once,
> too.
> ---
>  lib/vlog.h |   16 +++++++++-------
>  1 files changed, 9 insertions(+), 7 deletions(-)
>
> diff --git a/lib/vlog.h b/lib/vlog.h
> index d982db2..bbc00ad 100644
> --- a/lib/vlog.h
> +++ b/lib/vlog.h
> @@ -234,16 +234,18 @@ void vlog_rate_limit(const struct vlog_module *, enum vlog_level,
>  void vlog_usage(void);
>
>  /* Implementation details. */
> -#define VLOG(LEVEL, ...)                            \
> -    do {                                            \
> -        if (THIS_MODULE->min_level >= LEVEL) {      \
> -            vlog(THIS_MODULE, LEVEL, __VA_ARGS__);  \
> -        }                                           \
> +#define VLOG(LEVEL, ...)                                \
> +    do {                                                \
> +        enum vlog_level level__ = LEVEL;                \
> +        if (THIS_MODULE->min_level >= level__) {        \
> +            vlog(THIS_MODULE, level__, __VA_ARGS__);    \
> +        }                                               \
>     } while (0)
>  #define VLOG_RL(RL, LEVEL, ...)                                     \
>     do {                                                            \
> -        if (THIS_MODULE->min_level >= LEVEL) {                      \
> -            vlog_rate_limit(THIS_MODULE, LEVEL, RL, __VA_ARGS__);   \
> +        enum vlog_level level__ = LEVEL;                            \
> +        if (THIS_MODULE->min_level >= level__) {                    \
> +            vlog_rate_limit(THIS_MODULE, level__, RL, __VA_ARGS__); \
>         }                                                           \
>     } while (0)
>  #define VLOG_ONCE(LEVEL, ...)                       \
> --
> 1.7.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>



More information about the dev mailing list