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. --- This should avoid the occasionally misdetected version number lines as seen at https://fate.ffmpeg.org/history.cgi?slot=x86_64-msvc2022-wine. --- configure | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/configure b/configure index 534b443f7d..98a3b3814f 100755 --- a/configure +++ b/configure @@ -5127,7 +5127,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 -- 2.43.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".