decodeCompressed will start decompressing a block.
(hist *history)
| 475 | |
| 476 | // decodeCompressed will start decompressing a block. |
| 477 | func (b *blockDec) decodeCompressed(hist *history) error { |
| 478 | in := b.data |
| 479 | in, err := b.decodeLiterals(in, hist) |
| 480 | if err != nil { |
| 481 | return err |
| 482 | } |
| 483 | err = b.prepareSequences(in, hist) |
| 484 | if err != nil { |
| 485 | return err |
| 486 | } |
| 487 | if hist.decoders.nSeqs == 0 { |
| 488 | b.dst = append(b.dst, hist.decoders.literals...) |
| 489 | return nil |
| 490 | } |
| 491 | before := len(hist.decoders.out) |
| 492 | err = hist.decoders.decodeSync(hist.b[hist.ignoreBuffer:]) |
| 493 | if err != nil { |
| 494 | return err |
| 495 | } |
| 496 | if hist.decoders.maxSyncLen > 0 { |
| 497 | hist.decoders.maxSyncLen += uint64(before) |
| 498 | hist.decoders.maxSyncLen -= uint64(len(hist.decoders.out)) |
| 499 | } |
| 500 | b.dst = hist.decoders.out |
| 501 | hist.recentOffsets = hist.decoders.prevOffset |
| 502 | return nil |
| 503 | } |
| 504 | |
| 505 | func (b *blockDec) prepareSequences(in []byte, hist *history) (err error) { |
| 506 | if debugDecoder { |
no test coverage detected