From 428a046ca4c38219aebb47e0dfbcdfa5e607a5fe Mon Sep 17 00:00:00 2001 From: Marcel Hlopko Date: Mon, 15 Feb 2021 13:39:30 +0100 Subject: [PATCH] Make clang version parsing logic more robust Previously the function assumed that the version number appeared in the third word. This PR adds a heuristic - take the first word that starts with a number. This way we can also parse: `debian clang version 11.0` that my clang reports. --- src/lib.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/lib.rs b/src/lib.rs index 8dcba3fb97..06ba8e6377 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2444,10 +2444,12 @@ pub struct ClangVersion { pub fn clang_version() -> ClangVersion { ensure_libclang_is_loaded(); + //Debian clang version 11.0.1-2 let raw_v: String = clang::extract_clang_version(); let split_v: Option> = raw_v .split_whitespace() - .nth(2) + .filter(|t| t.chars().next().map_or(false, |v| v.is_ascii_digit())) + .next() .map(|v| v.split('.').collect()); match split_v { Some(v) => {