radeon: Improve WARN_ONCE macro to appear as single statement.
authorPauli Nieminen <suokkos@gmail.com>
Sun, 20 Sep 2009 17:07:35 +0000 (20:07 +0300)
committerPauli Nieminen <suokkos@gmail.com>
Sun, 20 Sep 2009 17:15:52 +0000 (20:15 +0300)
Do-while makes macro safe to be used with if and for constructions.

Also remove __LINE__ macro from variable name because scope is local to macro anyway.

src/mesa/drivers/dri/radeon/radeon_debug.h

index 2a8302293b2a37caa9aa42ddea8e0b5edce543e4..a59104168f0fef9f89706bd8a14a71180c56bc26 100644 (file)
@@ -149,21 +149,22 @@ static inline void radeon_debug_remove_indent(void)
        }
 }
 
+
 /* From http://gcc. gnu.org/onlinedocs/gcc-3.2.3/gcc/Variadic-Macros.html .
    I suppose we could inline this and use macro to fetch out __LINE__ and stuff in case we run into trouble
    with other compilers ... GLUE!
 */
-#define WARN_ONCE(a, ...)      { \
-       static int warn##__LINE__=1; \
-       if(warn##__LINE__){ \
+#define WARN_ONCE(a, ...)      do { \
+       static int __warn_once=1; \
+       if(__warn__once){ \
                radeon_warning("*********************************WARN_ONCE*********************************\n"); \
                radeon_warning("File %s function %s line %d\n", \
                        __FILE__, __FUNCTION__, __LINE__); \
                radeon_warning(  (a), ## __VA_ARGS__);\
                radeon_warning("***************************************************************************\n"); \
-               warn##__LINE__=0;\
+               __warn_once=0;\
                } \
-       }
+       } while(0)
 
 
 #endif