diff --git a/colorable_windows.go b/colorable_windows.go index 04c4229..b47ee3a 100644 --- a/colorable_windows.go +++ b/colorable_windows.go @@ -452,18 +452,19 @@ func (w *Writer) Write(data []byte) (n int, err error) { } else { er = bytes.NewReader(data) } - var bw [1]byte + var plaintext bytes.Buffer loop: for { c1, err := er.ReadByte() if err != nil { + plaintext.WriteTo(w.out) break loop } if c1 != 0x1b { - bw[0] = c1 - w.out.Write(bw[:]) + plaintext.WriteByte(c1) continue } + plaintext.WriteTo(w.out) c2, err := er.ReadByte() if err != nil { break loop diff --git a/noncolorable.go b/noncolorable.go index 95f2c6b..fc41f8e 100644 --- a/noncolorable.go +++ b/noncolorable.go @@ -18,18 +18,19 @@ func NewNonColorable(w io.Writer) io.Writer { // Write writes data on console func (w *NonColorable) Write(data []byte) (n int, err error) { er := bytes.NewReader(data) - var bw [1]byte + var plaintext bytes.Buffer loop: for { c1, err := er.ReadByte() if err != nil { + plaintext.WriteTo(w.out) break loop } if c1 != 0x1b { - bw[0] = c1 - w.out.Write(bw[:]) + plaintext.WriteByte(c1) continue } + plaintext.WriteTo(w.out) c2, err := er.ReadByte() if err != nil { break loop