diff --git a/src/menu.rs b/src/menu.rs index a735bb1..8a42869 100644 --- a/src/menu.rs +++ b/src/menu.rs @@ -56,9 +56,12 @@ fn read(input: &mut Input, timeout: &Duration) -> Result { uefi::boot::set_timer(&timer_event, trigger).context("unable to set timeout timer")?; let mut events = vec![timer_event, key_event]; - let event = uefi::boot::wait_for_event(&mut events) + + // Wait for either the timer event or the key event to trigger. + // Store the result so that we can free the timer event. + let event_result = uefi::boot::wait_for_event(&mut events) .discard_errdata() - .context("unable to wait for event")?; + .context("unable to wait for event"); // Close the timer event that we acquired. // We don't need to close the key event because it is owned globally. @@ -66,6 +69,9 @@ fn read(input: &mut Input, timeout: &Duration) -> Result { uefi::boot::close_event(timer_event).context("unable to close timer event")?; } + // Acquire the event that triggered. + let event = event_result?; + // The first event is the timer event. // If it has triggered, the user did not select a numbered entry. if event == 0 {