archive/zip: unexpected EOF (original) (raw)

The following program fails with the panic:

package main

import ( "archive/zip" "bytes" "io/ioutil" )

func main() { headers := []zip.FileHeader{ {Name:"0", Method:8}, {Name:"1", Method:8}, } contents := [][]byte{ []byte("a"), []byte("abcdefgh01234567890"), } buf := new(bytes.Buffer) w := zip.NewWriter(buf) for i, h := range headers { w1, err := w.CreateHeader(&h) if err != nil { panic(err) } _, err = w1.Write(contents[i]) if err != nil { panic(err) } } err := w.Close() if err != nil { panic(err) }

z1, err := zip.NewReader(bytes.NewReader(buf.Bytes()), int64(len(buf.Bytes())))
if err != nil {
    panic(err)
}
var headers1 []zip.FileHeader
var contents1 [][]byte
for _, f := range z1.File {
    r, err := f.Open()
    if err != nil {
        panic(err)
    }
    c, err := ioutil.ReadAll(r)
    if err != nil {
        panic(err)
    }
    headers1 = append(headers1, f.FileHeader)
    contents1 = append(contents1, c)
    r.Close()
}

}

panic: unexpected EOF

goroutine 1 [running]:
main.main()
    zip.go:48 +0x8f8

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