Re: [PATCH 2/5] Use max_int instead of max because MSVC defines this symbol already
Akim Demaille <[email protected]>
| Newsgroups | gmane.comp.parsers.bison.patches |
|---|---|
| Message-ID | <[email protected]> |
> Le 30 juil. 2020 à 20:53, [email protected] a écrit : > > From: Anonymous Maarten <[email protected]> Thanks for the patch! In the future, please try to match our style for commit messages. I'm installing this instead of your patch. Cheers! commit f2e40f736e0ac95de1e80b2322bd32170d1ece5e Author: Akim Demaille <[email protected]> Date: Sat Aug 1 19:56:34 2020 +0200 portability: beware of max () with MSVC Reported by Maarten De Braekeleer. https://lists.gnu.org/r/bison-patches/2020-07/msg00080.html We don't want to use gnulib's min and max macros, since we use function calls in min/max arguments. * src/location.c (max_int, min_int): Move to... * src/system.h: here. * src/counterexample.c, src/derivation.c: Use max_int instead of max. diff --git a/src/counterexample.c b/src/counterexample.c index c0dc796c..23436194 100644 --- a/src/counterexample.c +++ b/src/counterexample.c @@ -113,11 +113,6 @@ free_counterexample (counterexample *cex) free (cex); } -static int max (int a, int b) -{ - return a < b ? b : a; -} - static void counterexample_print (const counterexample *cex, FILE *out, const char *prefix) { @@ -131,8 +126,8 @@ counterexample_print (const counterexample *cex, FILE *out, const char *prefix) const char *deriv2_label = cex->shift_reduce ? _("Reduce derivation") : _("Second reduce derivation"); const int width = - max (max (mbswidth (example1_label, 0), mbswidth (example2_label, 0)), - max (mbswidth (deriv1_label, 0), mbswidth (deriv2_label, 0))); + max_int (max_int (mbswidth (example1_label, 0), mbswidth (example2_label, 0)), + max_int (mbswidth (deriv1_label, 0), mbswidth (deriv2_label, 0))); if (flat) fprintf (out, " %s%s%*s ", prefix, example1_label, width - mbswidth (example1_label, 0), ""); diff --git a/src/derivation.c b/src/derivation.c index 030cc17b..382dc458 100644 --- a/src/derivation.c +++ b/src/derivation.c @@ -140,12 +140,6 @@ derivation_size (const derivation *deriv) } -static int -max (int a, int b) -{ - return a < b ? b : a; -} - // Longest distance from root to leaf. static int derivation_depth (const derivation *deriv) @@ -159,7 +153,7 @@ derivation_depth (const derivation *deriv) for (gl_list_iterator_t it = gl_list_iterator (deriv->children); derivation_list_next (&it, &child); ) - res = max (res, derivation_depth (child)); + res = max_int (res, derivation_depth (child)); return res + 1; } else @@ -260,7 +254,7 @@ derivation_width (const derivation *deriv) // No separator at the beginning. children_width -= derivation_separator_width; } - return max (self_width, children_width); + return max_int (self_width, children_width); } else if (deriv == &d_dot) { diff --git a/src/location.c b/src/location.c index 5718144f..1c0aa1fd 100644 --- a/src/location.c +++ b/src/location.c @@ -40,18 +40,6 @@ location const empty_loc = EMPTY_LOCATION_INIT; -static int -min_int (int a, int b) -{ - return a < b ? a : b; -} - -static int -max_int (int a, int b) -{ - return a >= b ? a : b; -} - /* The terminal width. Not less than 40. */ static int columns (void) diff --git a/src/system.h b/src/system.h index eac89c27..fb65d573 100644 --- a/src/system.h +++ b/src/system.h @@ -131,6 +131,22 @@ typedef size_t uintptr_t; # include <stdbool.h> +/*-----------. +| Integers. | +`-----------*/ + +static inline int +min_int (int a, int b) +{ + return a < b ? a : b; +} + +static inline int +max_int (int a, int b) +{ + return a >= b ? a : b; +} + /*-------------. | Assertions. |