From d01fc1e3ee22891cd0fbe512caa8f617dc868614 Mon Sep 17 00:00:00 2001 From: Andrey Zgarbul Date: Wed, 25 Sep 2024 07:33:11 +0300 Subject: [PATCH] Fix cluster _modify --- src/patch/mod.rs | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/src/patch/mod.rs b/src/patch/mod.rs index bb5bd7fa..36eae12c 100644 --- a/src/patch/mod.rs +++ b/src/patch/mod.rs @@ -578,27 +578,25 @@ fn make_cluster(cadd: &Hash, path: Option<&BlockPath>) -> Result { - let mut ch = Vec::new(); - for (rname, val) in h { - ch.push(RegisterCluster::Register({ - let radd = val.hash()?; - let reg = make_register(radd, None)? - .name(rname.str()?.into()) - .build(VAL_LVL)?; - if let Some(dim) = make_dim_element(radd)? { - reg.array(dim.build(VAL_LVL)?) - } else { - reg.single() - } - })); + .default_register_properties(get_register_properties(cadd)?); + + if let Some(h) = cadd.get_hash("registers")? { + let mut ch = Vec::new(); + for (rname, val) in h { + ch.push(RegisterCluster::Register({ + let radd = val.hash()?; + let reg = make_register(radd, None)? + .name(rname.str()?.into()) + .build(VAL_LVL)?; + if let Some(dim) = make_dim_element(radd)? { + reg.array(dim.build(VAL_LVL)?) + } else { + reg.single() } - ch - } - _ => Vec::new(), - }); + })); + } + cnew = cnew.children(ch); + } if let Some(name) = cadd.get_str("name")? { cnew = cnew.name(name.into());