pub fn memory_set_len(cur_len: usize, offset: usize, value_len: usize, target_size: Option, limit: usize) -> Result { 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) } }