diff options
Diffstat (limited to 'src/nvim/os_unix.c')
| -rw-r--r-- | src/nvim/os_unix.c | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/nvim/os_unix.c b/src/nvim/os_unix.c index acd86f06dc..a27fee4e90 100644 --- a/src/nvim/os_unix.c +++ b/src/nvim/os_unix.c @@ -1,3 +1,6 @@ +// This is an open source non-commercial project. Dear PVS-Studio, please check +// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com + /* * os_unix.c -- code for all flavors of Unix (BSD, SYSV, SVR4, POSIX, ...) * @@ -131,6 +134,7 @@ void mch_free_acl(vim_acl_T aclent) #endif void mch_exit(int r) + FUNC_ATTR_NORETURN { exiting = true; @@ -138,8 +142,12 @@ void mch_exit(int r) ui_flush(); ml_close_all(true); // remove all memfiles - event_teardown(); - stream_set_blocking(input_global_fd(), true); // normalize stream (#2598) + if (!event_teardown() && r == 0) { + r = 1; // Exit with error if main_loop did not teardown gracefully. + } + if (input_global_fd() >= 0) { + stream_set_blocking(input_global_fd(), true); // normalize stream (#2598) + } #ifdef EXITFREE free_all_mem(); @@ -170,7 +178,7 @@ void mch_exit(int r) /// @returns OK for success or FAIL for error. int mch_expand_wildcards(int num_pat, char_u **pat, int *num_file, char_u ***file, int flags) FUNC_ATTR_NONNULL_ARG(3) - FUNC_ATTR_NONNULL_ARG(4) + FUNC_ATTR_NONNULL_ARG(4) { int i; size_t len; |
