Skip to content

Commit f4bcd81

Browse files
committed
fix: iterate directly on values for tuples
+ simplify total bytes calculation for lists
1 parent be94b5e commit f4bcd81

File tree

1 file changed

+5
-7
lines changed

1 file changed

+5
-7
lines changed

clarity/src/vm/clarity_wasm.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1555,11 +1555,8 @@ fn get_required_bytes(ty: &TypeSignature, value: &Value) -> Result<usize, Error>
15551555
let TypeSignature::SequenceType(SequenceSubtype::ListType(ltd)) = ty else {
15561556
return Err(Error::Wasm(WasmError::ValueTypeMismatch));
15571557
};
1558-
let total_bytes = l
1559-
.data
1560-
.iter()
1561-
.map(|_| get_type_in_memory_size(ltd.get_list_item_type(), true))
1562-
.sum::<i32>() as usize;
1558+
let element_size = get_type_in_memory_size(ltd.get_list_item_type(), true) as usize;
1559+
let total_bytes = element_size * l.data.len();
15631560
Ok(total_bytes)
15641561
}
15651562
Value::Principal(PrincipalData::Standard(_)) => Ok(STANDARD_PRINCIPAL_BYTES),
@@ -1574,8 +1571,9 @@ fn get_required_bytes(ty: &TypeSignature, value: &Value) -> Result<usize, Error>
15741571
};
15751572

15761573
let mut total_bytes = 0;
1577-
for (name, ty) in tuple_ty.get_type_map() {
1578-
total_bytes += get_required_bytes(ty, &data_map[name])?;
1574+
let type_map = tuple_ty.get_type_map();
1575+
for (value, ty) in data_map.values().zip(type_map.values()) {
1576+
total_bytes += get_required_bytes(ty, value)?;
15791577
}
15801578
Ok(total_bytes)
15811579
}

0 commit comments

Comments
 (0)