aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lua/executor.c
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-03-04 12:08:45 +0800
committerzeertzjq <zeertzjq@outlook.com>2023-03-04 13:53:09 +0800
commit808691e3993ee54519229c175fb950cc02261287 (patch)
treedb0a3b24d2da17b163e62a3f6096489558459dc5 /src/nvim/lua/executor.c
parent98e8464319439a934946c67bbcb9c78e865a08c8 (diff)
downloadrneovim-808691e3993ee54519229c175fb950cc02261287.tar.gz
rneovim-808691e3993ee54519229c175fb950cc02261287.tar.bz2
rneovim-808691e3993ee54519229c175fb950cc02261287.zip
fix(luado): get old_line length before executing Lua code
Diffstat (limited to 'src/nvim/lua/executor.c')
-rw-r--r--src/nvim/lua/executor.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c
index c8fc76e20d..bb461a7f13 100644
--- a/src/nvim/lua/executor.c
+++ b/src/nvim/lua/executor.c
@@ -1706,7 +1706,9 @@ void ex_luado(exarg_T *const eap)
break;
}
lua_pushvalue(lstate, -1);
- const char *old_line = (const char *)ml_get_buf(curbuf, l, false);
+ const char *const old_line = (const char *)ml_get_buf(curbuf, l, false);
+ // Get length of old_line here as calling Lua code may free it.
+ const size_t old_line_len = strlen(old_line);
lua_pushstring(lstate, old_line);
lua_pushnumber(lstate, (lua_Number)l);
if (nlua_pcall(lstate, 2, 1)) {
@@ -1714,8 +1716,6 @@ void ex_luado(exarg_T *const eap)
break;
}
if (lua_isstring(lstate, -1)) {
- size_t old_line_len = strlen(old_line);
-
size_t new_line_len;
const char *const new_line = lua_tolstring(lstate, -1, &new_line_len);
char *const new_line_transformed = xmemdupz(new_line, new_line_len);