From 61389dcba850a64f805a8b85afc927f964cfcec8 Mon Sep 17 00:00:00 2001 From: sanket1729 Date: Wed, 8 Jun 2022 17:49:17 -0700 Subject: [PATCH] Fix tr tree checking bug There are two bugs fixed in this commit 1) Not checking height while creating tree from from_str/from_tree 2) Fix height calculation bugs with root at 0 --- src/descriptor/tr.rs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/src/descriptor/tr.rs b/src/descriptor/tr.rs index 7fde28171..251e6b825 100644 --- a/src/descriptor/tr.rs +++ b/src/descriptor/tr.rs @@ -116,7 +116,7 @@ impl TapTree { TapTree::Tree(ref left_tree, ref right_tree) => { 1 + max(left_tree.taptree_height(), right_tree.taptree_height()) } - TapTree::Leaf(..) => 1, + TapTree::Leaf(..) => 0, } } @@ -420,11 +420,7 @@ impl_from_tree!( key.args.len() ))); } - Ok(Tr { - internal_key: expression::terminal(key, Pk::from_str)?, - tree: None, - spend_info: Mutex::new(None), - }) + Tr::new(expression::terminal(key, Pk::from_str)?, None) } 2 => { let key = &top.args[0]; @@ -436,11 +432,7 @@ impl_from_tree!( } let tree = &top.args[1]; let ret = Self::parse_tr_script_spend(tree)?; - Ok(Tr { - internal_key: expression::terminal(key, Pk::from_str)?, - tree: Some(ret), - spend_info: Mutex::new(None), - }) + Tr::new(expression::terminal(key, Pk::from_str)?, Some(ret)) } _ => { return Err(Error::Unexpected(format!(