mirror of
https://github.com/edera-dev/sprout.git
synced 2025-12-19 15:40:16 +00:00
fix(menu): free timer event to avoid leak
This commit is contained in:
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user