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 | |
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')
-rw-r--r-- | src/shared/macro.h | 26 | ||||
-rw-r--r-- | src/shared/prioq.c | 2 | ||||
-rw-r--r-- | src/shared/util.c | 2 |
3 files changed, 14 insertions, 16 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) \ diff --git a/src/shared/prioq.c b/src/shared/prioq.c index 64c44aef82..a2205719b4 100644 --- a/src/shared/prioq.c +++ b/src/shared/prioq.c @@ -159,7 +159,7 @@ int prioq_put(Prioq *q, void *data, unsigned *idx) { unsigned n; struct prioq_item *j; - n = MAX((q->n_items+1) * 2, 16); + n = MAX((q->n_items+1) * 2, 16u); j = realloc(q->items, sizeof(struct prioq_item) * n); if (!j) return -ENOMEM; diff --git a/src/shared/util.c b/src/shared/util.c index b516b9b053..46c20bec9c 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -5862,7 +5862,7 @@ void* greedy_realloc(void **p, size_t *allocated, size_t need) { if (*allocated >= need) return *p; - a = MAX(64, need * 2); + a = MAX(64u, need * 2); q = realloc(*p, a); if (!q) return NULL; |