55package zstd
66
77import (
8- "bytes "
8+ "encoding/binary "
99 "encoding/hex"
1010 "errors"
1111 "io"
@@ -43,9 +43,9 @@ const (
4343 MaxWindowSize = 1 << 29
4444)
4545
46- var (
47- frameMagic = [] byte { 0x28 , 0xb5 , 0x2f , 0xfd }
48- skippableFrameMagic = [] byte { 0x2a , 0x4d , 0x18 }
46+ const (
47+ frameMagic = " \x28 \xb5 \x2f \xfd "
48+ skippableFrameMagic = " \x2a \x4d \x18 "
4949)
5050
5151func newFrameDec (o decoderOptions ) * frameDec {
@@ -89,9 +89,9 @@ func (d *frameDec) reset(br byteBuffer) error {
8989 copy (signature [1 :], b )
9090 }
9191
92- if ! bytes . Equal (signature [1 :4 ], skippableFrameMagic ) || signature [0 ]& 0xf0 != 0x50 {
92+ if string (signature [1 :4 ]) != skippableFrameMagic || signature [0 ]& 0xf0 != 0x50 {
9393 if debugDecoder {
94- println ("Not skippable" , hex .EncodeToString (signature [:]), hex .EncodeToString (skippableFrameMagic ))
94+ println ("Not skippable" , hex .EncodeToString (signature [:]), hex .EncodeToString ([] byte ( skippableFrameMagic ) ))
9595 }
9696 // Break if not skippable frame.
9797 break
@@ -114,9 +114,9 @@ func (d *frameDec) reset(br byteBuffer) error {
114114 return err
115115 }
116116 }
117- if ! bytes . Equal (signature [:], frameMagic ) {
117+ if string (signature [:]) != frameMagic {
118118 if debugDecoder {
119- println ("Got magic numbers: " , signature , "want:" , frameMagic )
119+ println ("Got magic numbers: " , signature , "want:" , [] byte ( frameMagic ) )
120120 }
121121 return ErrMagicMismatch
122122 }
@@ -305,7 +305,7 @@ func (d *frameDec) checkCRC() error {
305305 }
306306
307307 // We can overwrite upper tmp now
308- want , err := d .rawInput .readSmall (4 )
308+ buf , err := d .rawInput .readSmall (4 )
309309 if err != nil {
310310 println ("CRC missing?" , err )
311311 return err
@@ -315,22 +315,17 @@ func (d *frameDec) checkCRC() error {
315315 return nil
316316 }
317317
318- var tmp [4 ]byte
319- got := d .crc .Sum64 ()
320- // Flip to match file order.
321- tmp [0 ] = byte (got >> 0 )
322- tmp [1 ] = byte (got >> 8 )
323- tmp [2 ] = byte (got >> 16 )
324- tmp [3 ] = byte (got >> 24 )
318+ want := binary .LittleEndian .Uint32 (buf [:4 ])
319+ got := uint32 (d .crc .Sum64 ())
325320
326- if ! bytes . Equal ( tmp [:], want ) {
321+ if got != want {
327322 if debugDecoder {
328- println ("CRC Check Failed:" , tmp [:], "!=" , want )
323+ printf ("CRC check failed: got %08x, want %08x \n " , got , want )
329324 }
330325 return ErrCRCMismatch
331326 }
332327 if debugDecoder {
333- println ("CRC ok" , tmp [:] )
328+ printf ("CRC ok %08x \n " , got )
334329 }
335330 return nil
336331}
0 commit comments