diff options
author | Bram Moolenaar <Bram@vim.org> | 2020-10-06 19:59:06 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2020-10-06 19:59:06 +0200 |
commit | 253b16a4abdad1df350b9ddd9a709520b063934c (patch) | |
tree | d25ce3c76cc4f33e8b69da98d739a3931f8747b8 | |
parent | 80361a5f2b134c88597d60b3d363b52084e712a1 (diff) | |
download | vim-git-253b16a4abdad1df350b9ddd9a709520b063934c.tar.gz |
patch 8.2.1806: MS-Windows with Python: Vim freezes after import commandv8.2.1806
Problem: MS-Windows with Python: Vim freezes after import command.
Solution: Use either "NUL" or "CONIN$" when reopening stdin. (Yasuhiro
Matsumoto, closes #7083)
-rw-r--r-- | src/if_python3.c | 15 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 11 insertions, 6 deletions
diff --git a/src/if_python3.c b/src/if_python3.c index 15c1d9973..f6904c380 100644 --- 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 index b8b9917d0..a410167be 100644 --- 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, |