From 564f807d324eda0159724aec63db2013698fa784 Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Sat, 13 Mar 2021 19:44:05 +0100 Subject: [PATCH 1/5] fix deadlock when closing credentials input without completing --- src/components/cred.rs | 3 +++ src/components/pull.rs | 7 ++++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/components/cred.rs b/src/components/cred.rs index 13525e0559..35e9babfe7 100644 --- a/src/components/cred.rs +++ b/src/components/cred.rs @@ -105,7 +105,9 @@ impl Component for CredComponent { if let Event::Key(e) = ev { if e == self.key_config.exit_popup { self.hide(); + return Ok(true); } + if self.input_username.event(ev)? || self.input_password.event(ev)? { @@ -139,6 +141,7 @@ impl Component for CredComponent { } } } + return Ok(true); } Ok(false) diff --git a/src/components/pull.rs b/src/components/pull.rs index c68fed9d0f..458d398538 100644 --- a/src/components/pull.rs +++ b/src/components/pull.rs @@ -257,9 +257,10 @@ impl Component for PullComponent { if self.visible { if let Event::Key(_) = ev { if self.input_cred.is_visible() { - if self.input_cred.event(ev)? { - return Ok(true); - } else if self.input_cred.get_cred().is_complete() + self.input_cred.event(ev)?; + + if self.input_cred.get_cred().is_complete() + || !self.input_cred.is_visible() { self.fetch_from_remote(Some( self.input_cred.get_cred().clone(), From d780045b1e7ca64a36ef3cabc200b60fa8fdc45c Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Sat, 13 Mar 2021 19:46:18 +0100 Subject: [PATCH 2/5] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3da9186e98..6c4ba3f89c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed - keep diff line selection after staging/unstaging/discarding ([#583](https://github.com/extrawurst/gitui/issues/583)) +- fix pull deadlocking when aborting credentials input ([#586](https://github.com/extrawurst/gitui/issues/586)) ## [0.12.0] - 2020-03-03 From d16a083ccc385c3f89e86248fced56e9d574746a Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Sat, 13 Mar 2021 19:53:01 +0100 Subject: [PATCH 3/5] testtest --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6c4ba3f89c..8fe2e96dc5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ![by-line-ops](assets/by-line-ops.gif) +TESET + ### Changed - `[s]` key repurposed to trigger line based (un)stage From dc722a6761c47ebe2f2c441a486ac94e8e787288 Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Sat, 13 Mar 2021 20:25:06 +0100 Subject: [PATCH 4/5] fix same deadlock in push/push-tags --- src/components/push.rs | 7 ++++--- src/components/push_tags.rs | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/components/push.rs b/src/components/push.rs index 5fe77de5f9..266ac76a5f 100644 --- a/src/components/push.rs +++ b/src/components/push.rs @@ -253,9 +253,10 @@ impl Component for PushComponent { if self.visible { if let Event::Key(e) = ev { if self.input_cred.is_visible() { - if self.input_cred.event(ev)? { - return Ok(true); - } else if self.input_cred.get_cred().is_complete() + self.input_cred.event(ev)?; + + if self.input_cred.get_cred().is_complete() + || !self.input_cred.is_visible() { self.push_to_remote( Some(self.input_cred.get_cred().clone()), diff --git a/src/components/push_tags.rs b/src/components/push_tags.rs index cde8fd741a..e1828420f8 100644 --- a/src/components/push_tags.rs +++ b/src/components/push_tags.rs @@ -227,9 +227,10 @@ impl Component for PushTagsComponent { if self.visible { if let Event::Key(e) = ev { if self.input_cred.is_visible() { - if self.input_cred.event(ev)? { - return Ok(true); - } else if self.input_cred.get_cred().is_complete() + self.input_cred.event(ev)?; + + if self.input_cred.get_cred().is_complete() + || !self.input_cred.is_visible() { self.push_to_remote(Some( self.input_cred.get_cred().clone(), From 5b56c96c2d32b26aa83beb192b9daa2c87d97783 Mon Sep 17 00:00:00 2001 From: Stephan Dilly Date: Sat, 13 Mar 2021 20:27:24 +0100 Subject: [PATCH 5/5] cleanup --- CHANGELOG.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fe2e96dc5..6c4ba3f89c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,8 +11,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ![by-line-ops](assets/by-line-ops.gif) -TESET - ### Changed - `[s]` key repurposed to trigger line based (un)stage