diff options
author | James McCoy <jamessan@jamessan.com> | 2018-10-01 22:58:47 -0400 |
---|---|---|
committer | James McCoy <jamessan@jamessan.com> | 2018-10-03 07:29:08 -0400 |
commit | eb7b2c791296b26099395dbe2a5ec2b13f4fbdc5 (patch) | |
tree | e8e40e8ea897f201242a6deeef3a4ffb9932398c | |
parent | 65206714bc0990a469da5efd2edbe52e81903014 (diff) | |
download | rneovim-eb7b2c791296b26099395dbe2a5ec2b13f4fbdc5.tar.gz rneovim-eb7b2c791296b26099395dbe2a5ec2b13f4fbdc5.tar.bz2 rneovim-eb7b2c791296b26099395dbe2a5ec2b13f4fbdc5.zip |
Fix crash if --embed is used more than once
-rw-r--r-- | src/nvim/main.c | 12 | ||||
-rw-r--r-- | test/functional/core/startup_spec.lua | 6 |
2 files changed, 14 insertions, 4 deletions
diff --git a/src/nvim/main.c b/src/nvim/main.c index 371c8d824e..1db988b5f4 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -258,6 +258,14 @@ int main(int argc, char **argv) // Process the command line arguments. File names are put in the global // argument list "global_alist". command_line_scan(¶ms); + + if (embedded_mode) { + const char *err; + if (!channel_from_stdio(true, CALLBACK_READER_INIT, &err)) { + abort(); + } + } + server_init(params.listen_addr); if (GARGCOUNT > 0) { @@ -848,10 +856,6 @@ static void command_line_scan(mparm_T *parmp) headless_mode = true; } else if (STRICMP(argv[0] + argv_idx, "embed") == 0) { embedded_mode = true; - const char *err; - if (!channel_from_stdio(true, CALLBACK_READER_INIT, &err)) { - abort(); - } } else if (STRNICMP(argv[0] + argv_idx, "listen", 6) == 0) { want_argument = true; argv_idx += 6; diff --git a/test/functional/core/startup_spec.lua b/test/functional/core/startup_spec.lua index 2a67453bce..15121261c7 100644 --- a/test/functional/core/startup_spec.lua +++ b/test/functional/core/startup_spec.lua @@ -4,6 +4,7 @@ local Screen = require('test.functional.ui.screen') local clear = helpers.clear local command = helpers.command local eq = helpers.eq +local eval = helpers.eval local feed = helpers.feed local funcs = helpers.funcs local nvim_prog = helpers.nvim_prog @@ -196,5 +197,10 @@ describe('startup', function() funcs.system({nvim_prog, '-n', '-es' }, { 'set encoding', '' })) end) + + it('does not crash if --embed is given twice', function() + clear{args={'--embed'}} + eq(2, eval('1+1')) + end) end) |