From d5c4e4b7b2cb8e9bef1bdc955ffd630d4230e192 Mon Sep 17 00:00:00 2001 From: Lukas Wirth Date: Fri, 8 Aug 2025 15:54:26 +0200 Subject: [PATCH] languages: Fix digest check on downloaded artifact for clangd (#35870) Closes 35864 Release Notes: - N/A --- crates/languages/src/c.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/crates/languages/src/c.rs b/crates/languages/src/c.rs index a55d8ff998a8d92625f5e4a319e01dd3a5735ec4..df93e517606d1eebb73c131891ebdd471328d31b 100644 --- a/crates/languages/src/c.rs +++ b/crates/languages/src/c.rs @@ -75,6 +75,9 @@ impl super::LspAdapter for CLspAdapter { &*version.downcast::().unwrap(); let version_dir = container_dir.join(format!("clangd_{name}")); let binary_path = version_dir.join("bin/clangd"); + let expected_digest = digest + .as_ref() + .and_then(|digest| digest.strip_prefix("sha256:")); let binary = LanguageServerBinary { path: binary_path.clone(), @@ -99,7 +102,9 @@ impl super::LspAdapter for CLspAdapter { log::warn!("Unable to run {binary_path:?} asset, redownloading: {err}",) }) }; - if let (Some(actual_digest), Some(expected_digest)) = (&metadata.digest, digest) { + if let (Some(actual_digest), Some(expected_digest)) = + (&metadata.digest, expected_digest) + { if actual_digest == expected_digest { if validity_check().await.is_ok() { return Ok(binary);