"James Duley via GitGitGadget" <gitgitgadget@xxxxxxxxx> writes: > From: James Duley <jagduley@xxxxxxxxx> > > Previously, if save_term/restore_term was called with the DUPLEX flag > and then without the flag, an assertion was hit. >> Assertion failed: hconout != INVALID_HANDLE_VALUE, >> file compat/terminal.c, line 283 > > This is because save_term doesn't set cmode_out when not DUPLEX, > so an old version of cmode_out was being used. > Therefore, hconout is the correct thing for restore to check > to decide whether to restore stdout console mode. > > I saw this on Windows with interactive.singleKey when doing `git add -p`. > Specifically, after hitting `e` to edit in vim, once on to the prompt > for the next hunk, pressing any key results in the assertion. > > Signed-off-by: James Duley <jagduley@xxxxxxxxx> > --- > Ensure restore_term works correctly with DUPLEX Ran "git log -L247,290:compat/terminal.c" to find commits that touched this Windows specific area of the code to see who might be capable of reviewing this change, as I am certainly not one of them. e22b245e (terminal: teach git how to save/restore its terminal settings, 2021-10-05) is where the assert being removed came from, it seems. The author of that commit should be CC'ed if we want to ask for a quicker review. I'll also add Git-for-Windows maintainer as well. Thanks. > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2000%2Fparched%2Frestore-term-windows-fix-v1 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2000/parched/restore-term-windows-fix-v1 > Pull-Request: https://github.com/git/git/pull/2000 > > compat/terminal.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/compat/terminal.c b/compat/terminal.c > index 584f27bf7e1..72b184555ff 100644 > --- a/compat/terminal.c > +++ b/compat/terminal.c > @@ -279,8 +279,7 @@ void restore_term(void) > > SetConsoleMode(hconin, cmode_in); > CloseHandle(hconin); > - if (cmode_out) { > - assert(hconout != INVALID_HANDLE_VALUE); > + if (hconout != INVALID_HANDLE_VALUE) { > SetConsoleMode(hconout, cmode_out); > CloseHandle(hconout); > } > > base-commit: 16bd9f20a403117f2e0d9bcda6c6e621d3763e77