From bf8974c5615a3f6409b5be5708af62a13a7b548a Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Mon, 11 Mar 2024 12:42:04 -0400 Subject: [PATCH] v0.126.x: Reload extensions if manifest parsing fails (#9186) This PR fixes an issue where a malformed extension manifest could cause the extensions to not be loaded. We now default to reloading, and only skip reloading if we know it's safe to do so. This is an adaption of the change we made here: https://github.com/zed-industries/zed/pull/8781/commits/ab8a9f9a6f3929fdff3da91149809efd0f53d8b7 Release Notes: - N/A --- crates/extension/src/extension_store.rs | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/crates/extension/src/extension_store.rs b/crates/extension/src/extension_store.rs index e80ac6f5a4a26a9efd216fe90ca30c176dcd6143..f7392e0405bae660f0bc5895f8e3d86f89e81b49 100644 --- a/crates/extension/src/extension_store.rs +++ b/crates/extension/src/extension_store.rs @@ -261,21 +261,23 @@ impl ExtensionStore { ) }); + let mut should_reload = true; + if let Some(manifest_content) = manifest_content.log_err() { if let Some(manifest) = serde_json::from_str(&manifest_content).log_err() { // TODO: don't detach self.extensions_updated(manifest, cx).detach(); + + if let (Ok(Some(manifest_metadata)), Ok(Some(extensions_metadata))) = + (manifest_metadata, extensions_metadata) + { + if manifest_metadata.mtime > extensions_metadata.mtime { + should_reload = false; + } + } } } - let should_reload = if let (Ok(Some(manifest_metadata)), Ok(Some(extensions_metadata))) = - (manifest_metadata, extensions_metadata) - { - extensions_metadata.mtime > manifest_metadata.mtime - } else { - true - }; - if should_reload { self.reload(cx) }