compress/lzw: compress/decompress corrupts data (original) (raw)

The following program fails with the panic:

package main

import ( "bytes" "compress/lzw" "fmt" "io/ioutil" )

func main() { uncomp := []byte("a") buf := new(bytes.Buffer) w := lzw.NewWriter(buf, lzw.LSB, 2) _, err := w.Write(uncomp) if err != nil { panic(err) } if err := w.Close(); err != nil { panic(err) } r1 := lzw.NewReader(buf, lzw.LSB, 2) uncomp1, err := ioutil.ReadAll(r1) if err != nil { panic(err) } if !bytes.Equal(uncomp, uncomp1) { fmt.Printf("data0: %q\n", uncomp) fmt.Printf("data0: %q\n", uncomp1) panic("data differs") } }

data0: "a"
data0: "\x01"
panic: data differs

go version devel +b0532a9 Mon Jun 8 05:13:15 2015 +0000 linux/amd64