MCPcopy
hub / github.com/klauspost/compress / nextBlockSync

Method nextBlockSync

zstd/decoder.go:486–567  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

484}
485
486func (d *Decoder) nextBlockSync() (ok bool) {
487 if d.current.d == nil {
488 d.current.d = <-d.decoders
489 }
490 for len(d.current.b) == 0 {
491 if !d.syncStream.inFrame {
492 d.frame.history.reset()
493 d.current.err = d.frame.reset(&d.syncStream.br)
494 if d.current.err == nil {
495 d.current.err = d.setDict(d.frame)
496 }
497 if d.current.err != nil {
498 return false
499 }
500 if d.frame.WindowSize > d.o.maxDecodedSize || d.frame.WindowSize > d.o.maxWindowSize {
501 d.current.err = ErrDecoderSizeExceeded
502 return false
503 }
504
505 d.syncStream.decodedFrame = 0
506 d.syncStream.inFrame = true
507 }
508 d.current.err = d.frame.next(d.current.d)
509 if d.current.err != nil {
510 return false
511 }
512 d.frame.history.ensureBlock()
513 if debugDecoder {
514 println("History trimmed:", len(d.frame.history.b), "decoded already:", d.syncStream.decodedFrame)
515 }
516 histBefore := len(d.frame.history.b)
517 d.current.err = d.current.d.decodeBuf(&d.frame.history)
518
519 if d.current.err != nil {
520 println("error after:", d.current.err)
521 return false
522 }
523 d.current.b = d.frame.history.b[histBefore:]
524 if debugDecoder {
525 println("history after:", len(d.frame.history.b))
526 }
527
528 // Check frame size (before CRC)
529 d.syncStream.decodedFrame += uint64(len(d.current.b))
530 if d.syncStream.decodedFrame > d.frame.FrameContentSize {
531 if debugDecoder {
532 printf("DecodedFrame (%d) > FrameContentSize (%d)\n", d.syncStream.decodedFrame, d.frame.FrameContentSize)
533 }
534 d.current.err = ErrFrameSizeExceeded
535 return false
536 }
537
538 // Check FCS
539 if d.current.d.Last && d.frame.FrameContentSize != fcsUnknown && d.syncStream.decodedFrame != d.frame.FrameContentSize {
540 if debugDecoder {
541 printf("DecodedFrame (%d) != FrameContentSize (%d)\n", d.syncStream.decodedFrame, d.frame.FrameContentSize)
542 }
543 d.current.err = ErrFrameSizeMismatch

Callers 1

nextBlockMethod · 0.95

Calls 10

setDictMethod · 0.95
printlnFunction · 0.85
printfFunction · 0.85
ensureBlockMethod · 0.80
decodeBufMethod · 0.80
checkCRCMethod · 0.80
consumeCRCMethod · 0.80
WriteMethod · 0.65
resetMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected