From 0ddf13c260b99a1beacde757543bd462d3b6f1fd Mon Sep 17 00:00:00 2001 From: Qinxuan Chen Date: Wed, 27 Mar 2019 21:00:33 +0800 Subject: [PATCH] Fix impl-rlp for uint in primitive-types (#117) * Fix impl-rlp for uint in primitive-types Signed-off-by: koushiro * Fix impl_uint_rlp Signed-off-by: koushiro * Fix impl_uint_rlp Signed-off-by: koushiro --- primitive-types/impls/rlp/src/lib.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/primitive-types/impls/rlp/src/lib.rs b/primitive-types/impls/rlp/src/lib.rs index 8f01d05..56f3432 100644 --- a/primitive-types/impls/rlp/src/lib.rs +++ b/primitive-types/impls/rlp/src/lib.rs @@ -20,8 +20,8 @@ macro_rules! impl_uint_rlp { ($name: ident, $size: expr) => { impl $crate::rlp::Encodable for $name { fn rlp_append(&self, s: &mut $crate::rlp::RlpStream) { - let leading_empty_bytes = $size - (self.bits() + 7) / 8; - let mut buffer = [0u8; $size]; + let leading_empty_bytes = $size * 8 - (self.bits() + 7) / 8; + let mut buffer = [0u8; $size * 8]; self.to_big_endian(&mut buffer); s.encoder().encode_value(&buffer[leading_empty_bytes..]); } @@ -32,7 +32,7 @@ macro_rules! impl_uint_rlp { rlp.decoder().decode_value(|bytes| { if !bytes.is_empty() && bytes[0] == 0 { Err($crate::rlp::DecoderError::RlpInvalidIndirection) - } else if bytes.len() <= $size { + } else if bytes.len() <= $size * 8 { Ok($name::from(bytes)) } else { Err($crate::rlp::DecoderError::RlpIsTooBig)