From db664820d448272726c80520513e57d49a69afcb Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Thu, 13 Oct 2022 04:33:34 +0200 Subject: [PATCH] fix: lock mutex before checking altscreen state This prevents the odd race condition where Enter- & ExitAltScreen are called concurrently. --- standard_renderer.go | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/standard_renderer.go b/standard_renderer.go index c0b685d..9260e5e 100644 --- a/standard_renderer.go +++ b/standard_renderer.go @@ -268,13 +268,13 @@ func (r *standardRenderer) altScreen() bool { } func (r *standardRenderer) enterAltScreen() { + r.mtx.Lock() + defer r.mtx.Unlock() + if r.altScreenActive { return } - r.mtx.Lock() - defer r.mtx.Unlock() - r.altScreenActive = true r.out.AltScreen() @@ -291,13 +291,13 @@ func (r *standardRenderer) enterAltScreen() { } func (r *standardRenderer) exitAltScreen() { + r.mtx.Lock() + defer r.mtx.Unlock() + if !r.altScreenActive { return } - r.mtx.Lock() - defer r.mtx.Unlock() - r.altScreenActive = false r.out.ExitAltScreen()