aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/lua/executor.c2
-rw-r--r--test/functional/lua/overrides_spec.lua7
2 files changed, 8 insertions, 1 deletions
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c
index 9ec5bfb8ad..eb821f7831 100644
--- a/src/nvim/lua/executor.c
+++ b/src/nvim/lua/executor.c
@@ -519,7 +519,7 @@ static int nlua_print(lua_State *const lstate)
}
msg((char_u *)str + start);
}
- if (str[len - 1] == NUL) { // Last was newline
+ if (len && str[len - 1] == NUL) { // Last was newline
msg((char_u *)"");
}
}
diff --git a/test/functional/lua/overrides_spec.lua b/test/functional/lua/overrides_spec.lua
index 6e1d50071d..8ca5fe57ba 100644
--- a/test/functional/lua/overrides_spec.lua
+++ b/test/functional/lua/overrides_spec.lua
@@ -69,6 +69,13 @@ describe('print', function()
eq('\nT^@', redir_exec([[lua print("T\0")]]))
eq('\nT\n', redir_exec([[lua print("T\n")]]))
end)
+ it('prints empty strings correctly', function()
+ -- Regression: first test used to crash
+ eq('', redir_exec('lua print("")'))
+ eq('\n def', redir_exec('lua print("", "def")'))
+ eq('\nabc ', redir_exec('lua print("abc", "")'))
+ eq('\nabc def', redir_exec('lua print("abc", "", "def")'))
+ end)
end)
describe('debug.debug', function()