From 6086778dc044aa6cdcca0f29f359ef75253eeca1 Mon Sep 17 00:00:00 2001 From: Alex Zenla Date: Mon, 27 Oct 2025 16:03:25 -0400 Subject: [PATCH] fix(menu): free timer event to avoid leak --- src/menu.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/menu.rs b/src/menu.rs index 8c48f0e..958a877 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -44,11 +44,16 @@ fn read(input: &mut Input, timeout: &Duration) -> Result { let trigger = TimerTrigger::Relative(timeout.as_nanos() as u64 / 100); 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) .discard_errdata() .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. // If it has triggered, the user did not select a numbered entry. if event == 0 {