@@ -604,7 +604,7 @@ func readLengthEnodedString(b []byte) ([]byte, bool, int, error) {
604604 // Get length
605605 num , isNull , n := readLengthEncodedInteger (b )
606606 if num < 1 {
607- return nil , isNull , n , nil
607+ return b [ n : n ] , isNull , n , nil
608608 }
609609
610610 n += int (num )
@@ -632,40 +632,31 @@ func skipLengthEnodedString(b []byte) (int, error) {
632632 return n , io .EOF
633633}
634634
635- func readLengthEncodedInteger (b []byte ) (num uint64 , isNull bool , n int ) {
635+ func readLengthEncodedInteger (b []byte ) (uint64 , bool , int ) {
636636 switch b [0 ] {
637637
638638 // 251: NULL
639639 case 0xfb :
640- n = 1
641- isNull = true
642- return
640+ return 0 , true , 1
643641
644642 // 252: value of following 2
645643 case 0xfc :
646- num = uint64 (b [1 ]) | uint64 (b [2 ])<< 8
647- n = 3
648- return
644+ return uint64 (b [1 ]) | uint64 (b [2 ])<< 8 , false , 3
649645
650646 // 253: value of following 3
651647 case 0xfd :
652- num = uint64 (b [1 ]) | uint64 (b [2 ])<< 8 | uint64 (b [3 ])<< 16
653- n = 4
654- return
648+ return uint64 (b [1 ]) | uint64 (b [2 ])<< 8 | uint64 (b [3 ])<< 16 , false , 4
655649
656650 // 254: value of following 8
657651 case 0xfe :
658- num = uint64 (b [1 ]) | uint64 (b [2 ])<< 8 | uint64 (b [3 ])<< 16 |
659- uint64 (b [4 ])<< 24 | uint64 (b [5 ])<< 32 | uint64 (b [6 ])<< 40 |
660- uint64 (b [7 ])<< 48 | uint64 (b [8 ])<< 54
661- n = 9
662- return
652+ return uint64 (b [1 ]) | uint64 (b [2 ])<< 8 | uint64 (b [3 ])<< 16 |
653+ uint64 (b [4 ])<< 24 | uint64 (b [5 ])<< 32 | uint64 (b [6 ])<< 40 |
654+ uint64 (b [7 ])<< 48 | uint64 (b [8 ])<< 54 ,
655+ false , 9
663656 }
664657
665658 // 0-250: value of first byte
666- num = uint64 (b [0 ])
667- n = 1
668- return
659+ return uint64 (b [0 ]), false , 1
669660}
670661
671662func appendLengthEncodedInteger (b []byte , n uint64 ) []byte {
0 commit comments