mirror of
https://github.com/systemd/systemd.git
synced 2025-01-11 09:18:07 +03:00
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.]
This commit is contained in:
parent
e5ec62c569
commit
9607d9470e
@ -44,9 +44,6 @@
|
||||
#define kb_to_graph(m) ((m) * arg_scale_y * 0.0001)
|
||||
#define to_color(n) (192.0 - ((n) * 192.0))
|
||||
|
||||
#define max(x, y) (((x) > (y)) ? (x) : (y))
|
||||
#define min(x, y) (((x) < (y)) ? (x) : (y))
|
||||
|
||||
static char str[8092];
|
||||
|
||||
#define svg(a...) do { snprintf(str, 8092, ## a); fputs(str, of); fflush(of); } while (0)
|
||||
@ -441,8 +438,8 @@ static void svg_io_bi_bar(void) {
|
||||
int stop;
|
||||
double tot;
|
||||
|
||||
start = max(i - ((range / 2) - 1), 0);
|
||||
stop = min(i + (range / 2), samples - 1);
|
||||
start = MAX(i - ((range / 2) - 1), 0);
|
||||
stop = MIN(i + (range / 2), samples - 1);
|
||||
|
||||
tot = (double)(blockstat[stop].bi - blockstat[start].bi)
|
||||
/ (stop - start);
|
||||
@ -463,8 +460,8 @@ static void svg_io_bi_bar(void) {
|
||||
double tot;
|
||||
double pbi;
|
||||
|
||||
start = max(i - ((range / 2) - 1), 0);
|
||||
stop = min(i + (range / 2), samples);
|
||||
start = MAX(i - ((range / 2) - 1), 0);
|
||||
stop = MIN(i + (range / 2), samples);
|
||||
|
||||
tot = (double)(blockstat[stop].bi - blockstat[start].bi)
|
||||
/ (stop - start);
|
||||
@ -517,8 +514,8 @@ static void svg_io_bo_bar(void) {
|
||||
int stop;
|
||||
double tot;
|
||||
|
||||
start = max(i - ((range / 2) - 1), 0);
|
||||
stop = min(i + (range / 2), samples - 1);
|
||||
start = MAX(i - ((range / 2) - 1), 0);
|
||||
stop = MIN(i + (range / 2), samples - 1);
|
||||
|
||||
tot = (double)(blockstat[stop].bi - blockstat[start].bi)
|
||||
/ (stop - start);
|
||||
@ -539,8 +536,8 @@ static void svg_io_bo_bar(void) {
|
||||
double tot;
|
||||
double pbo;
|
||||
|
||||
start = max(i - ((range / 2) - 1), 0);
|
||||
stop = min(i + (range / 2), samples);
|
||||
start = MAX(i - ((range / 2) - 1), 0);
|
||||
stop = MIN(i + (range / 2), samples);
|
||||
|
||||
tot = (double)(blockstat[stop].bo - blockstat[start].bo)
|
||||
/ (stop - start);
|
||||
|
@ -1325,7 +1325,7 @@ int journal_file_append_entry(JournalFile *f, const dual_timestamp *ts, const st
|
||||
#endif
|
||||
|
||||
/* alloca() can't take 0, hence let's allocate at least one */
|
||||
items = alloca(sizeof(EntryItem) * MAX(1, n_iovec));
|
||||
items = alloca(sizeof(EntryItem) * MAX(1u, n_iovec));
|
||||
|
||||
for (i = 0; i < n_iovec; i++) {
|
||||
uint64_t p;
|
||||
|
@ -455,7 +455,7 @@ static int bus_socket_read_auth(sd_bus *b) {
|
||||
if (r != 0)
|
||||
return r;
|
||||
|
||||
n = MAX(256, b->rbuffer_size * 2);
|
||||
n = MAX(256u, b->rbuffer_size * 2);
|
||||
|
||||
if (n > BUS_AUTH_SIZE_MAX)
|
||||
n = BUS_AUTH_SIZE_MAX;
|
||||
|
@ -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) \
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -328,7 +328,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
|
||||
|
||||
if (!arg_full) {
|
||||
unsigned basic_len;
|
||||
id_len = MIN(max_id_len, 25);
|
||||
id_len = MIN(max_id_len, 25u);
|
||||
basic_len = 5 + id_len + 5 + active_len + sub_len;
|
||||
if (job_count)
|
||||
basic_len += job_len + 1;
|
||||
@ -337,7 +337,7 @@ static void output_units_list(const struct unit_info *unit_infos, unsigned c) {
|
||||
extra_len = columns() - basic_len;
|
||||
/* Either UNIT already got 25, or is fully satisfied.
|
||||
* Grant up to 25 to DESC now. */
|
||||
incr = MIN(extra_len, 25);
|
||||
incr = MIN(extra_len, 25u);
|
||||
desc_len += incr;
|
||||
extra_len -= incr;
|
||||
/* split the remaining space between UNIT and DESC,
|
||||
@ -463,7 +463,7 @@ static int get_unit_list(DBusConnection *bus, DBusMessage **reply,
|
||||
if (*c >= n_units) {
|
||||
struct unit_info *w;
|
||||
|
||||
n_units = MAX(2 * *c, 16);
|
||||
n_units = MAX(2 * *c, 16u);
|
||||
w = realloc(*unit_infos, sizeof(struct unit_info) * n_units);
|
||||
if (!w)
|
||||
return log_oom();
|
||||
@ -543,7 +543,7 @@ static void output_unit_file_list(const UnitFileList *units, unsigned c) {
|
||||
|
||||
if (!arg_full) {
|
||||
unsigned basic_cols;
|
||||
id_cols = MIN(max_id_len, 25);
|
||||
id_cols = MIN(max_id_len, 25u);
|
||||
basic_cols = 1 + id_cols + state_cols;
|
||||
if (basic_cols < (unsigned) columns())
|
||||
id_cols += MIN(columns() - basic_cols, max_id_len - id_cols);
|
||||
@ -657,7 +657,7 @@ static int list_unit_files(DBusConnection *bus, char **args) {
|
||||
if (c >= n_units) {
|
||||
UnitFileList *w;
|
||||
|
||||
n_units = MAX(2*c, 16);
|
||||
n_units = MAX(2*c, 16u);
|
||||
w = realloc(units, sizeof(struct UnitFileList) * n_units);
|
||||
if (!w)
|
||||
return log_oom();
|
||||
@ -694,7 +694,7 @@ static int list_dependencies_print(const char *name, int level, unsigned int bra
|
||||
int i;
|
||||
_cleanup_free_ char *n = NULL;
|
||||
size_t len = 0;
|
||||
size_t max_len = MAX(columns(),20);
|
||||
size_t max_len = MAX(columns(),20u);
|
||||
|
||||
for (i = level - 1; i >= 0; i--) {
|
||||
len += 2;
|
||||
|
Loading…
Reference in New Issue
Block a user