[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 2/5] Use max_int instead of max because MSVC defines this sym
From: |
Akim Demaille |
Subject: |
Re: [PATCH 2/5] Use max_int instead of max because MSVC defines this symbol already |
Date: |
Sat, 1 Aug 2020 20:02:06 +0200 |
> Le 30 juil. 2020 à 20:53, anonymous.maarten@gmail.com a écrit :
>
> From: Anonymous Maarten <anonymous.maarten@gmail.com>
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 <akim.demaille@gmail.com>
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. |
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Re: [PATCH 2/5] Use max_int instead of max because MSVC defines this symbol already,
Akim Demaille <=