From 900af453ff3cfb789aca7e1e3fc5689d40bb5c51 Mon Sep 17 00:00:00 2001 From: "Tobin C. Harding" Date: Wed, 21 Aug 2024 11:20:40 +1000 Subject: [PATCH] Stop accessing inner ScriptBuf field when encoding In preparation for moving the `ScriptBuf` type to `primitives` stop accessing the inner field when encoding/decoding, use `as_script` and `from_bytes` instead. --- bitcoin/src/blockdata/script/mod.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/bitcoin/src/blockdata/script/mod.rs b/bitcoin/src/blockdata/script/mod.rs index 4b2530598..c0df71c0b 100644 --- a/bitcoin/src/blockdata/script/mod.rs +++ b/bitcoin/src/blockdata/script/mod.rs @@ -616,14 +616,14 @@ impl<'de> serde::Deserialize<'de> for ScriptBuf { impl Encodable for Script { #[inline] fn consensus_encode(&self, w: &mut W) -> Result { - crate::consensus::encode::consensus_encode_with_size(&self.0, w) + crate::consensus::encode::consensus_encode_with_size(self.as_bytes(), w) } } impl Encodable for ScriptBuf { #[inline] fn consensus_encode(&self, w: &mut W) -> Result { - self.0.consensus_encode(w) + self.as_script().consensus_encode(w) } } @@ -632,7 +632,8 @@ impl Decodable for ScriptBuf { fn consensus_decode_from_finite_reader( r: &mut R, ) -> Result { - Ok(ScriptBuf(Decodable::consensus_decode_from_finite_reader(r)?)) + let v: Vec = Decodable::consensus_decode_from_finite_reader(r)?; + Ok(ScriptBuf::from_bytes(v)) } }