diff --git a/cwriter/writer.go b/cwriter/writer.go index 095dae1..ad2ac9a 100644 --- a/cwriter/writer.go +++ b/cwriter/writer.go @@ -31,6 +31,7 @@ type Writer struct { *bytes.Buffer out io.Writer + lines int // used by writer_windows only fd int terminal bool termSize func(int) (int, int, error) diff --git a/cwriter/writer_windows.go b/cwriter/writer_windows.go index 054383d..f9447a6 100644 --- a/cwriter/writer_windows.go +++ b/cwriter/writer_windows.go @@ -15,25 +15,16 @@ procFillConsoleOutputCharacter = kernel32.NewProc("FillConsoleOutputCharacterW") ) -var linesCleaner = makeLinesCleaner() - -func makeLinesCleaner() func(*Writer, int) error { - var lastLines int - return func(w *Writer, n int) (err error) { - if lastLines > 0 { - err = w.clearLines(lastLines) - } - lastLines = n - return err - } -} - // Flush flushes the underlying buffer. func (w *Writer) Flush(lines int) error { - err := linesCleaner(w, lines) - if err == nil { - _, err = w.WriteTo(w.out) + if w.lines > 0 { + err := w.clearLines(w.lines) + if err != nil { + return err + } } + w.lines = lines + _, err := w.WriteTo(w.out) return err }