aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMartin Storsjö <martin@martin.st>2025-06-13 16:59:53 +0300
committerMartin Storsjö <martin@martin.st>2025-06-19 23:24:18 +0300
commit45a30e03613a3c63d74a40f7ac86ce28dce14ff8 (patch)
tree7592fa5243a2f429fbcc5868ef9978c18d542f62
parentee1f79b0fa4c82da9c19328b049b593c71611402 (diff)
downloadffmpeg-45a30e03613a3c63d74a40f7ac86ce28dce14ff8.tar.gz
configure: Make MSVC version grabbing more robust
When running plain "cl", to get the MSVC version, it prints the version header on stderr, while the usage instructions are printed on stdout. Usually, the version on stderr gets flushed first, so "head -n1" gets the line it expects, but some times (in particular when running MSVC wrapped in wine), it can get the usage line first. Redirect stdout to /dev/null, so we only grab the version among the lines printed to stderr. This should make the version number grabbing more robust. At least all relevant versions of MSVC seem to print this specifically to stderr, not stdout (so we don't risk to miss it); checked down to MSVC 2010. Signed-off-by: Martin Storsjö <martin@martin.st>
-rwxr-xr-xconfigure5
1 files changed, 4 insertions, 1 deletions
diff --git a/configure b/configure
index e2e9fc26d8..708ecd9025 100755
--- a/configure
+++ b/configure
@@ -5130,7 +5130,10 @@ probe_cc(){
elif $_cc -nologo- 2>&1 | grep -q ^Microsoft || { $_cc -v 2>&1 | grep -q clang && $_cc -? > /dev/null 2>&1; }; then
_type=msvc
if $_cc -nologo- 2>&1 | grep -q ^Microsoft; then
- _ident=$($_cc 2>&1 | head -n1 | tr -d '\r')
+ # The version number is printed on the first line on stderr, stdout
+ # gets the usage instructions. Only include stderr, to avoid
+ # potential ordering race conditions.
+ _ident=$($_cc 2>&1 >/dev/null | head -n1 | tr -d '\r')
else
_ident=$($_cc --version 2>/dev/null | head -n1 | tr -d '\r')
fi