From 5e37c893c2a37693dbe51ec21aa59142f145675e Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Tue, 11 Apr 2023 15:14:32 +0200 Subject: [PATCH] Ensure project is still alive by the time remote LSP request starts --- crates/project/src/project.rs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/crates/project/src/project.rs b/crates/project/src/project.rs index 2daa959cc8..90985f8810 100644 --- a/crates/project/src/project.rs +++ b/crates/project/src/project.rs @@ -4210,7 +4210,13 @@ impl Project { let rpc = self.client.clone(); let message = request.to_proto(project_id, buffer); return cx.spawn_weak(|this, cx| async move { + // Ensure the project is still alive by the time the task + // is scheduled. + this.upgrade(&cx) + .ok_or_else(|| anyhow!("project dropped"))?; + let response = rpc.request(message).await?; + let this = this .upgrade(&cx) .ok_or_else(|| anyhow!("project dropped"))?;