@@ -236,9 +236,9 @@ where
236
236
let mut shift = 0 ;
237
237
loop {
238
238
reader. read_exact ( & mut buf) ?;
239
- let c = buf[ 0 ] ;
239
+ let c: u64 = buf[ 0 ] . into ( ) ;
240
240
241
- res |= ( ( c as u64 ) & 0x7f ) << shift;
241
+ res |= ( c & 0x7f ) << shift;
242
242
shift += 7 ;
243
243
244
244
if ( c & 0x80 ) == 0 {
@@ -262,7 +262,7 @@ where
262
262
fn write ( & self , writer : & mut W ) -> Result < ( ) , WriteError > {
263
263
let mut curr = self . 0 ;
264
264
loop {
265
- let mut c = ( curr & 0x7f ) as u8 ;
265
+ let mut c = u8 :: try_from ( curr & 0x7f ) . map_err ( WriteError :: Overflow ) ? ;
266
266
curr >>= 7 ;
267
267
if curr > 0 {
268
268
c |= 0x80 ;
@@ -409,7 +409,8 @@ where
409
409
W : Write ,
410
410
{
411
411
fn write ( & self , writer : & mut W ) -> Result < ( ) , WriteError > {
412
- UnsignedVarint ( self . 0 . len ( ) as u64 + 1 ) . write ( writer) ?;
412
+ let len = u64:: try_from ( self . 0 . len ( ) + 1 ) . map_err ( WriteError :: Overflow ) ?;
413
+ UnsignedVarint ( len) . write ( writer) ?;
413
414
writer. write_all ( self . 0 . as_bytes ( ) ) ?;
414
415
Ok ( ( ) )
415
416
}
@@ -465,7 +466,8 @@ where
465
466
fn write ( & self , writer : & mut W ) -> Result < ( ) , WriteError > {
466
467
match & self . 0 {
467
468
Some ( s) => {
468
- UnsignedVarint ( s. len ( ) as u64 + 1 ) . write ( writer) ?;
469
+ let len = u64:: try_from ( s. len ( ) + 1 ) . map_err ( WriteError :: Overflow ) ?;
470
+ UnsignedVarint ( len) . write ( writer) ?;
469
471
writer. write_all ( s. as_bytes ( ) ) ?;
470
472
}
471
473
None => {
@@ -533,12 +535,14 @@ where
533
535
{
534
536
fn read ( reader : & mut R ) -> Result < Self , ReadError > {
535
537
let len = UnsignedVarint :: read ( reader) ?;
536
- let mut res = VecBuilder :: new ( len. 0 as usize ) ;
537
- for _ in 0 ..len. 0 {
538
+ let len = usize:: try_from ( len. 0 ) . map_err ( ReadError :: Overflow ) ?;
539
+ let mut res = VecBuilder :: new ( len) ;
540
+ for _ in 0 ..len {
538
541
let tag = UnsignedVarint :: read ( reader) ?;
539
542
540
543
let data_len = UnsignedVarint :: read ( reader) ?;
541
- let mut data_builder = VecBuilder :: new ( data_len. 0 as usize ) ;
544
+ let data_len = usize:: try_from ( data_len. 0 ) . map_err ( ReadError :: Overflow ) ?;
545
+ let mut data_builder = VecBuilder :: new ( data_len) ;
542
546
data_builder = data_builder. read_exact ( reader) ?;
543
547
544
548
res. push ( ( tag, data_builder. into ( ) ) ) ;
@@ -552,11 +556,13 @@ where
552
556
W : Write ,
553
557
{
554
558
fn write ( & self , writer : & mut W ) -> Result < ( ) , WriteError > {
555
- UnsignedVarint ( self . 0 . len ( ) as u64 ) . write ( writer) ?;
559
+ let len = u64:: try_from ( self . 0 . len ( ) ) . map_err ( WriteError :: Overflow ) ?;
560
+ UnsignedVarint ( len) . write ( writer) ?;
556
561
557
562
for ( tag, data) in & self . 0 {
558
563
tag. write ( writer) ?;
559
- UnsignedVarint ( data. len ( ) as u64 ) . write ( writer) ?;
564
+ let data_len = u64:: try_from ( data. len ( ) ) . map_err ( WriteError :: Overflow ) ?;
565
+ UnsignedVarint ( data_len) . write ( writer) ?;
560
566
writer. write_all ( data) ?;
561
567
}
562
568
@@ -661,7 +667,7 @@ where
661
667
{
662
668
fn read ( reader : & mut R ) -> Result < Self , ReadError > {
663
669
let buf = NullableBytes :: read ( reader) ?. 0 . unwrap_or_default ( ) ;
664
- let len = buf. len ( ) as u64 ;
670
+ let len = u64 :: try_from ( buf. len ( ) ) ? ;
665
671
let mut buf = Cursor :: new ( buf) ;
666
672
667
673
let mut batches = vec ! [ ] ;
0 commit comments