aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2024-03-22 05:54:12 +0800
committerzeertzjq <zeertzjq@outlook.com>2024-03-22 06:04:37 +0800
commitdabc44d15c8ef203b16e00dfa93c5e2639680bc4 (patch)
treed14085e9665e2763c46ec339262a728391e0a4d0
parent271879dd490b8f9c20c5541e60ca2a2924b631d9 (diff)
downloadrneovim-dabc44d15c8ef203b16e00dfa93c5e2639680bc4.tar.gz
rneovim-dabc44d15c8ef203b16e00dfa93c5e2639680bc4.tar.bz2
rneovim-dabc44d15c8ef203b16e00dfa93c5e2639680bc4.zip
vim-patch:9.1.0195: memleak with ex_drop, NULL dereference
Problem: memleak with ex_drop(), NULL dereference (zeertzjq) Solution: revert back to ex_rewind(), use curbuf instead of buf fixes: vim/vim#14246 closes: vim/vim#14251 https://github.com/vim/vim/commit/85a769d466d2009db6a318fd120d9691344664ba Co-authored-by: Christian Brabandt <cb@256bit.org>
-rw-r--r--src/nvim/ex_cmds2.c6
-rw-r--r--test/functional/ex_cmds/drop_spec.lua2
2 files changed, 4 insertions, 4 deletions
diff --git a/src/nvim/ex_cmds2.c b/src/nvim/ex_cmds2.c
index fc50664ce0..d754150089 100644
--- a/src/nvim/ex_cmds2.c
+++ b/src/nvim/ex_cmds2.c
@@ -866,12 +866,12 @@ void ex_drop(exarg_T *eap)
const int save_ar = curbuf->b_p_ar;
// reload the file if it is newer
- curbuf->b_p_ar = 1;
+ curbuf->b_p_ar = true;
buf_check_timestamp(curbuf);
curbuf->b_p_ar = save_ar;
}
- if (buf->b_ml.ml_flags & ML_EMPTY) {
- open_buffer(false, eap, 0);
+ if (curbuf->b_ml.ml_flags & ML_EMPTY) {
+ ex_rewind(eap);
}
return;
}
diff --git a/test/functional/ex_cmds/drop_spec.lua b/test/functional/ex_cmds/drop_spec.lua
index f6e84e34a5..cfba4e93bd 100644
--- a/test/functional/ex_cmds/drop_spec.lua
+++ b/test/functional/ex_cmds/drop_spec.lua
@@ -72,7 +72,7 @@ describe(':drop', function()
lazy dogs |
{0:~ }|*6
{1:Xdrop_modified.txt [+] }|
- "Xdrop_modified.txt" [New] |
+ :drop Xdrop_modified.txt |
]])
end)
end)