// litWidth is the width in bits of literal codes.
func (d *decoder) decode() {
// Loop over the code stream, converting codes into decompressed bytes.
+loop:
for {
code, err := d.read(d)
if err != nil {
err = io.ErrUnexpectedEOF
}
d.err = err
- d.flush()
- return
+ break
}
switch {
case code < d.clear:
d.last = decoderInvalidCode
continue
case code == d.eof:
- d.flush()
d.err = io.EOF
- return
+ break loop
case code <= d.hi:
c, i := code, len(d.output)-1
if code == d.hi {
}
default:
d.err = errors.New("lzw: invalid code")
- d.flush()
- return
+ break loop
}
d.last, d.hi = code, d.hi+1
if d.hi >= d.overflow {
}
}
if d.o >= flushBuffer {
- d.flush()
- return
+ break
}
}
-}
-
-func (d *decoder) flush() {
+ // Flush pending output.
d.toRead = d.output[:d.o]
d.o = 0
}