Skip to content

Commit 232f687

Browse files
add bounds check
1 parent 4f99ee5 commit 232f687

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

pallets/subtensor/src/uids.rs

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,23 @@ impl<T: Config> Pallet<T> {
1010
}
1111

1212
/// Resets the trust, emission, consensus, incentive, dividends of the neuron to default
13+
fn clear_element_at<N>(position: u16) -> impl Fn(&mut Vec<N>)
14+
where
15+
N: From<u8>,
16+
{
17+
move |vec: &mut Vec<N>| {
18+
if vec.len() > position as usize {
19+
vec[position as usize] = N::from(0);
20+
};
21+
}
22+
}
23+
1324
pub fn clear_neuron(netuid: u16, neuron_uid: u16) {
14-
Emission::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
15-
Trust::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
16-
Consensus::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
17-
Incentive::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
18-
Dividends::<T>::mutate(netuid, |v| v[neuron_uid as usize] = 0);
25+
Emission::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
26+
Trust::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
27+
Consensus::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
28+
Incentive::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
29+
Dividends::<T>::mutate(netuid, Self::clear_element_at(neuron_uid));
1930
}
2031

2132
/// Replace the neuron under this uid.

0 commit comments

Comments
 (0)