Skip to content

Commit 39442ba

Browse files
author
Stephan Dilly
authored
Fix 586 deadlock pull creds (#587)
* fix deadlock when closing credentials input without completing * fix same deadlock in push/push-tags
1 parent 973de10 commit 39442ba

File tree

5 files changed

+16
-9
lines changed

5 files changed

+16
-9
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2323

2424
### Fixed
2525
- keep diff line selection after staging/unstaging/discarding ([#583](https://github.com/extrawurst/gitui/issues/583))
26+
- fix pull deadlocking when aborting credentials input ([#586](https://github.com/extrawurst/gitui/issues/586))
2627

2728
## [0.12.0] - 2020-03-03
2829

src/components/cred.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ impl Component for CredComponent {
105105
if let Event::Key(e) = ev {
106106
if e == self.key_config.exit_popup {
107107
self.hide();
108+
return Ok(true);
108109
}
110+
109111
if self.input_username.event(ev)?
110112
|| self.input_password.event(ev)?
111113
{
@@ -139,6 +141,7 @@ impl Component for CredComponent {
139141
}
140142
}
141143
}
144+
142145
return Ok(true);
143146
}
144147
Ok(false)

src/components/pull.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -257,9 +257,10 @@ impl Component for PullComponent {
257257
if self.visible {
258258
if let Event::Key(_) = ev {
259259
if self.input_cred.is_visible() {
260-
if self.input_cred.event(ev)? {
261-
return Ok(true);
262-
} else if self.input_cred.get_cred().is_complete()
260+
self.input_cred.event(ev)?;
261+
262+
if self.input_cred.get_cred().is_complete()
263+
|| !self.input_cred.is_visible()
263264
{
264265
self.fetch_from_remote(Some(
265266
self.input_cred.get_cred().clone(),

src/components/push.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -253,9 +253,10 @@ impl Component for PushComponent {
253253
if self.visible {
254254
if let Event::Key(e) = ev {
255255
if self.input_cred.is_visible() {
256-
if self.input_cred.event(ev)? {
257-
return Ok(true);
258-
} else if self.input_cred.get_cred().is_complete()
256+
self.input_cred.event(ev)?;
257+
258+
if self.input_cred.get_cred().is_complete()
259+
|| !self.input_cred.is_visible()
259260
{
260261
self.push_to_remote(
261262
Some(self.input_cred.get_cred().clone()),

src/components/push_tags.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,9 +227,10 @@ impl Component for PushTagsComponent {
227227
if self.visible {
228228
if let Event::Key(e) = ev {
229229
if self.input_cred.is_visible() {
230-
if self.input_cred.event(ev)? {
231-
return Ok(true);
232-
} else if self.input_cred.get_cred().is_complete()
230+
self.input_cred.event(ev)?;
231+
232+
if self.input_cred.get_cred().is_complete()
233+
|| !self.input_cred.is_visible()
233234
{
234235
self.push_to_remote(Some(
235236
self.input_cred.get_cred().clone(),

0 commit comments

Comments
 (0)