File size: 574 Bytes
4951e76 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | pub fn memory_set_len(cur_len: usize, offset: usize, value_len: usize, target_size: Option<usize>, limit: usize) -> Result<usize, u8> {
if value_len == 0 {
return Ok(cur_len);
}
let target = match target_size {
Some(t) => t,
None => value_len,
};
match offset.checked_add(target) {
Some(pos) => {
if pos > limit {
return Err(1);
}
}
None => return Err(1),
}
if cur_len < offset + target {
Ok(offset + target)
} else {
Ok(cur_len)
}
}
|