From 0d62993714c865e9a498cb0fb8408e46365b0cc3 Mon Sep 17 00:00:00 2001 From: Kyle Carberry Date: Thu, 10 Feb 2022 23:42:33 -0600 Subject: [PATCH] Fix race condition in DefaultOnWidthChanged --- utils_unix.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils_unix.go b/utils_unix.go index f88dac9..56c3b87 100644 --- a/utils_unix.go +++ b/utils_unix.go @@ -1,3 +1,4 @@ +//go:build darwin || dragonfly || freebsd || (linux && !appengine) || netbsd || openbsd || solaris // +build darwin dragonfly freebsd linux,!appengine netbsd openbsd solaris package readline @@ -60,11 +61,14 @@ func GetStdin() int { // ----------------------------------------------------------------------------- var ( + widthChangeMutex sync.Mutex widthChange sync.Once widthChangeCallback func() ) func DefaultOnWidthChanged(f func()) { + widthChangeMutex.Lock() + defer widthChangeMutex.Unlock() widthChangeCallback = f widthChange.Do(func() { ch := make(chan os.Signal, 1)