aboutsummaryrefslogtreecommitdiff
path: root/alacritty/src/config/ui_config.rs
diff options
context:
space:
mode:
authorChristian Duerr <contact@christianduerr.com>2024-11-02 20:05:51 +0000
committerGitHub <noreply@github.com>2024-11-02 20:05:51 +0000
commitfd745a9f4cb3ba81623167c9d1117747353db33a (patch)
treeeffc8817d4d024dd80477fce123bcd2335b95874 /alacritty/src/config/ui_config.rs
parent39ea7271e32ad88280191d8040d6f8feafe4307a (diff)
downloadr-alacritty-fd745a9f4cb3ba81623167c9d1117747353db33a.tar.gz
r-alacritty-fd745a9f4cb3ba81623167c9d1117747353db33a.tar.bz2
r-alacritty-fd745a9f4cb3ba81623167c9d1117747353db33a.zip
Fix racing condition in hint triggering
This fixes an issue with hints where it was possible that the terminal content of highlighted hints changed between the highlighted hint update and the activation of the hint. This patch always validates the hint's text content against the hint itself to ensure that the content is still valid for the original hint which triggered the highlight. Closes #8277.
Diffstat (limited to 'alacritty/src/config/ui_config.rs')
-rw-r--r--alacritty/src/config/ui_config.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/alacritty/src/config/ui_config.rs b/alacritty/src/config/ui_config.rs
index 69716dee..b44bda0d 100644
--- a/alacritty/src/config/ui_config.rs
+++ b/alacritty/src/config/ui_config.rs
@@ -253,7 +253,7 @@ pub struct Hints {
alphabet: HintsAlphabet,
/// All configured terminal hints.
- pub enabled: Vec<Hint>,
+ pub enabled: Vec<Rc<Hint>>,
}
impl Default for Hints {
@@ -274,7 +274,7 @@ impl Default for Hints {
});
Self {
- enabled: vec![Hint {
+ enabled: vec![Rc::new(Hint {
content,
action,
persist: false,
@@ -288,7 +288,7 @@ impl Default for Hints {
mods: ModsWrapper(ModifiersState::SHIFT | ModifiersState::CONTROL),
mode: Default::default(),
}),
- }],
+ })],
alphabet: Default::default(),
}
}
@@ -619,7 +619,7 @@ impl SerdeReplace for Program {
}
pub(crate) struct StringVisitor;
-impl<'de> serde::de::Visitor<'de> for StringVisitor {
+impl serde::de::Visitor<'_> for StringVisitor {
type Value = String;
fn expecting(&self, formatter: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {