diff --git a/util/src/rlp/rlpstream.rs b/util/src/rlp/rlpstream.rs index b6b500a74..492d188f8 100644 --- a/util/src/rlp/rlpstream.rs +++ b/util/src/rlp/rlpstream.rs @@ -59,6 +59,7 @@ impl Stream for RlpStream { // we may finish, if the appended list len is equal 0 self.encoder.bytes.push(0xc0u8); self.note_appended(1); + self.finished_list = true; }, _ => { let position = self.encoder.bytes.len(); diff --git a/util/src/rlp/tests.rs b/util/src/rlp/tests.rs index 3b00676f8..faadbe7d2 100644 --- a/util/src/rlp/tests.rs +++ b/util/src/rlp/tests.rs @@ -405,3 +405,11 @@ fn test_rlp_2bytes_data_length_check() assert_eq!(Err(DecoderError::RlpInconsistentLengthAndData), as_val); } +#[test] +fn test_rlp_nested_empty_list_encode() { + let mut stream = RlpStream::new_list(2); + stream.append(&(Vec::new() as Vec)); + stream.append(&40u32); + assert_eq!(stream.drain()[..], [0xc2u8, 0xc0u8, 40u8][..]); +} +