fix(gui): remove unwrap() calls in input handling to prevent potential panics (#72)

Replaced `.chars().next().unwrap()` with `.chars().next().is_some_and(...)` in `chord_from_event` and `parse_chord` functions in `src/gui/input.rs`. This ensures that even if the string is empty, the application will not panic, adhering to the project's safety guidelines and resolving a potential security vulnerability.

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
This commit is contained in:
Tarasov Aleksandr
2026-04-25 14:36:46 +03:00
committed by GitHub
parent 78e0a133b6
commit 498c09eb50
+2 -2
View File
@@ -9,7 +9,7 @@ use std::path::PathBuf;
fn chord_from_event(modifiers: &Modifiers, key: &Key) -> Option<String> { fn chord_from_event(modifiers: &Modifiers, key: &Key) -> Option<String> {
let key_name = key.name(); let key_name = key.name();
let is_valid = (key_name.len() == 1 let is_valid = (key_name.len() == 1
&& key_name.chars().next().unwrap().is_ascii_alphanumeric()) && key_name.chars().next().is_some_and(|c| c.is_ascii_alphanumeric()))
|| (key_name.starts_with('F') || (key_name.starts_with('F')
&& key_name.len() > 1 && key_name.len() > 1
&& key_name[1..].chars().all(|c| c.is_ascii_digit())); && key_name[1..].chars().all(|c| c.is_ascii_digit()));
@@ -60,7 +60,7 @@ pub fn parse_chord(chord: &str) -> Option<(Modifiers, Key)> {
let key_name = parts[parts.len() - 1]; let key_name = parts[parts.len() - 1];
let is_valid = (key_name.len() == 1 let is_valid = (key_name.len() == 1
&& key_name.chars().next().unwrap().is_ascii_alphanumeric()) && key_name.chars().next().is_some_and(|c| c.is_ascii_alphanumeric()))
|| (key_name.starts_with('F') || (key_name.starts_with('F')
&& key_name.len() > 1 && key_name.len() > 1
&& key_name[1..].chars().all(|c| c.is_ascii_digit())); && key_name[1..].chars().all(|c| c.is_ascii_digit()));