diff options
author | Cristian Rodríguez <crrodriguez@opensuse.org> | 2013-04-01 03:08:05 -0300 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2013-04-01 23:43:48 -0400 |
commit | 9607d9470eec07df817e58f64d312ccb5ac4cfcc (patch) | |
tree | d0d933b13ec47e4d22dcee3078af94e89a998e6e /src/shared/macro.h | |
parent | e5ec62c56963d997edaffa904af5dc45dac23988 (diff) |
Always use our own MAX/MIN definitions
code in src/shared/macro.h only defined MAX/MIN in case
they were not defined previously. however the MAX/MIN
macros implemented in glibc are not of the "safe" kind but defined
as:
define MIN(a,b) (((a)<(b))?(a):(b))
define MAX(a,b) (((a)>(b))?(a):(b))
Avoid nasty side effects by using our own versions instead.
Also fix the warnings derived from this change.
[zj: - modify MAX3 macro to fix warning about _a shadowing _a,
- do bootchart/svg.c too,
- remove unused MIN3.]
Diffstat (limited to 'src/shared/macro.h')
-rw-r--r-- | src/shared/macro.h | 26 |
1 files changed, 12 insertions, 14 deletions
diff --git a/src/shared/macro.h b/src/shared/macro.h index 898784ac83..4e5d0f4f2f 100644 --- a/src/shared/macro.h +++ b/src/shared/macro.h @@ -71,29 +71,27 @@ static inline size_t ALIGN_TO(size_t l, size_t ali) { const typeof( ((type *)0)->member ) *__mptr = (ptr); \ (type *)( (char *)__mptr - offsetof(type,member) );}) -#ifndef MAX -#define MAX(a,b) \ - __extension__ ({ \ - typeof(a) _a = (a); \ - typeof(b) _b = (b); \ - _a > _b ? _a : _b; \ +#undef MAX +#define MAX(a,b) \ + __extension__ ({ \ + typeof(a) _a = (a); \ + typeof(b) _b = (b); \ + _a > _b ? _a : _b; \ }) -#endif -#define MAX3(a,b,c) \ - MAX(MAX(a,b),c) +#define MAX3(x,y,z) \ + __extension__ ({ \ + typeof(x) _c = MAX(x,y); \ + MAX(_c, z); \ + }) -#ifndef MIN +#undef MIN #define MIN(a,b) \ __extension__ ({ \ typeof(a) _a = (a); \ typeof(b) _b = (b); \ _a < _b ? _a : _b; \ }) -#endif - -#define MIN3(a,b,c) \ - MIN(MIN(a,b),c) #ifndef CLAMP #define CLAMP(x, low, high) \ |