fix(menu): free timer event to avoid leak

This commit is contained in:
2025-10-27 16:03:25 -04:00
parent e729d6a60b
commit 6086778dc0

View File

@@ -44,11 +44,16 @@ fn read(input: &mut Input, timeout: &Duration) -> Result<MenuOperation> {
let trigger = TimerTrigger::Relative(timeout.as_nanos() as u64 / 100); let trigger = TimerTrigger::Relative(timeout.as_nanos() as u64 / 100);
uefi::boot::set_timer(&timer_event, trigger).context("unable to set timeout timer")?; uefi::boot::set_timer(&timer_event, trigger).context("unable to set timeout timer")?;
let mut events = [timer_event, key_event]; let mut events = vec![timer_event, key_event];
let event = uefi::boot::wait_for_event(&mut events) let event = uefi::boot::wait_for_event(&mut events)
.discard_errdata() .discard_errdata()
.context("unable to wait for event")?; .context("unable to wait for event")?;
// Close the timer event that we acquired.
if let Some(timer_event) = events.into_iter().next() {
uefi::boot::close_event(timer_event).context("unable to close timer event")?;
}
// The first event is the timer event. // The first event is the timer event.
// If it has triggered, the user did not select a numbered entry. // If it has triggered, the user did not select a numbered entry.
if event == 0 { if event == 0 {