From 81e79a1daf26475f020605dd92970c9bf5b112fe Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Mon, 2 Mar 2026 13:50:24 +0200 Subject: lsp: make exit flag atomic to avoid data race (task 406) --- internal/lsp/handlers_init.go | 2 +- internal/lsp/server.go | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/internal/lsp/handlers_init.go b/internal/lsp/handlers_init.go index 29dc803..702871d 100644 --- a/internal/lsp/handlers_init.go +++ b/internal/lsp/handlers_init.go @@ -40,5 +40,5 @@ func (s *Server) handleShutdown(req Request) { } func (s *Server) handleExit() { - s.exited = true + s.exited.Store(true) } diff --git a/internal/lsp/server.go b/internal/lsp/server.go index dc76975..730169f 100644 --- a/internal/lsp/server.go +++ b/internal/lsp/server.go @@ -8,6 +8,7 @@ import ( "log" "strings" "sync" + "sync/atomic" "time" "codeberg.org/snonux/hexai/internal/appconfig" @@ -24,7 +25,7 @@ type Server struct { out io.Writer outMu sync.Mutex logger *log.Logger - exited bool + exited atomic.Bool mu sync.RWMutex docs map[string]*document logContext bool @@ -415,7 +416,7 @@ func (s *Server) Run() error { continue } go s.handle(req) - if s.exited { + if s.exited.Load() { return nil } } -- cgit v1.2.3