Merge pull request #49 from segrey/sync-access-to-console
synchronize access to Console (fixes #48)
diff --git a/colorable_windows.go b/colorable_windows.go
index d9967cd..04c4229 100644
--- a/colorable_windows.go
+++ b/colorable_windows.go
@@ -10,6 +10,7 @@
"os"
"strconv"
"strings"
+ "sync"
"syscall"
"unsafe"
@@ -94,6 +95,7 @@
oldattr word
oldpos coord
rest bytes.Buffer
+ mutex sync.Mutex
}
// NewColorable returns new instance of Writer which handles escape sequence from File.
@@ -433,6 +435,8 @@
// Write writes data on console
func (w *Writer) Write(data []byte) (n int, err error) {
+ w.mutex.Lock()
+ defer w.mutex.Unlock()
var csbi consoleScreenBufferInfo
procGetConsoleScreenBufferInfo.Call(uintptr(w.handle), uintptr(unsafe.Pointer(&csbi)))