diff --git a/src/kernel/src/signal/mod.rs b/src/kernel/src/signal/mod.rs index 2d5e03248..25a455576 100644 --- a/src/kernel/src/signal/mod.rs +++ b/src/kernel/src/signal/mod.rs @@ -108,13 +108,14 @@ impl Iterator for SignalIter { type Item = Signal; fn next(&mut self) -> Option { - if self.current <= SIG_MAXSIG { - let signal = Signal(unsafe { NonZeroI32::new_unchecked(self.current) }); - self.current += 1; - Some(signal) - } else { - None + if self.current > SIG_MAXSIG { + return None; } + + let sig = Signal::new(self.current); + self.current += 1; + + sig } fn size_hint(&self) -> (usize, Option) {