input: stream_set_blocking(): libuv impl

- Create a private libuv loop instead of re-using uv_default_loop(), to
  avoid conflict[1] with existing watcher(s) on the fd.
- Expose the global "input" fd as a getter instead of a mutable global.

[1] .deps/build/src/libuv/src/unix/core.c:833:
      uv__io_stop: Assertion `loop->watchers[w->fd] == w' failed.
This commit is contained in:
Justin M. Keyes
2015-05-25 14:13:18 -04:00
parent 8a782f1699
commit 4219b69145
8 changed files with 26 additions and 26 deletions

View File

@@ -2679,6 +2679,7 @@ void preserve_exit(void)
// Prevent repeated calls into this method.
if (really_exiting) {
stream_set_blocking(input_global_fd(), true); //normalize stream (#2598)
exit(2);
}
@@ -2699,7 +2700,6 @@ void preserve_exit(void)
}
ml_close_all(false); // close all memfiles, without deleting
stream_set_blocking(global_input_fd, true); //normalize stream (#2598)
mch_errmsg("Vim: Finished.\n");