# HG changeset patch # User Bram Moolenaar # Date 1602007204 -7200 # Node ID c174ec901f7e95d098321a535289f894455a2458 # Parent db179e02143d17ce620e9507ef684d2745e3b1ce patch 8.2.1806: MS-Windows with Python: Vim freezes after import command Commit: https://github.com/vim/vim/commit/253b16a4abdad1df350b9ddd9a709520b063934c Author: Bram Moolenaar Date: Tue Oct 6 19:59:06 2020 +0200 patch 8.2.1806: MS-Windows with Python: Vim freezes after import command Problem: MS-Windows with Python: Vim freezes after import command. Solution: Use either "NUL" or "CONIN$" when reopening stdin. (Yasuhiro Matsumoto, closes #7083) diff --git a/src/if_python3.c b/src/if_python3.c --- a/src/if_python3.c +++ b/src/if_python3.c @@ -917,6 +917,7 @@ reset_stdin(void) { FILE *(*py__acrt_iob_func)(unsigned) = NULL; FILE *(*pyfreopen)(const char *, const char *, FILE *) = NULL; + char *stdin_name = "NUL"; HINSTANCE hinst; # ifdef DYNAMIC_PYTHON3 @@ -933,16 +934,18 @@ reset_stdin(void) if (py__acrt_iob_func) { HINSTANCE hpystdiodll = find_imported_module_by_funcname(hinst, - "__acrt_iob_func"); + "__acrt_iob_func"); if (hpystdiodll) - pyfreopen = (void*)GetProcAddress(hpystdiodll, "freopen"); + pyfreopen = (void *)GetProcAddress(hpystdiodll, "freopen"); } + if (isatty(fileno(stdin))) + stdin_name = "CONIN$"; - // Reconnect stdin to NUL. - if (pyfreopen) - pyfreopen("NUL", "r", py__acrt_iob_func(0)); + // Reconnect stdin to NUL or CONIN$. + if (pyfreopen != NULL) + pyfreopen(stdin_name, "r", py__acrt_iob_func(0)); else - freopen("NUL", "r", stdin); + freopen(stdin_name, "r", stdin); } #else # define reset_stdin() diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1806, +/**/ 1805, /**/ 1804,