func()

in pkg/unpack/reader.go [182:206]


func (r *UnpackReader) unpack(unpacked, packed []byte, offset int64, pre int) (int, error) {
	poff := 0
	written := 0
	dpw := ycd.DigitsPerWord(r.radix)

	for poff < len(packed) && written < len(unpacked) {
		remaining := len(unpacked) - written
		reqDigits := remaining
		if offset%r.blockSize+int64(remaining) > r.blockSize {
			reqDigits = int(r.blockSize - offset%r.blockSize)

		}
		reqBytes := (reqDigits + dpw - 1) / dpw * WordSize
		n, err := UnpackBlock(unpacked[written:written+reqDigits], packed[poff:poff+reqBytes], r.radix, pre)
		poff += reqBytes
		written += n
		offset += int64(n)

		if err != nil {
			return written, err
		}
		pre = 0
	}
	return written, nil
}