mirror of
https://github.com/neovim/neovim.git
synced 2025-10-21 09:12:07 +00:00
revert: "memory: Free buffers after freeing variables" (#26356)
This reverts commit fe30d8ccef
.
The original commit intends to prevent heap-use-after-free with EXITFREE
caused by changedtick_di, which is no longer a problem.
Freeing buffers after freeing variables will cause heap-use-after-free
with EXITFREE when a partial is used as prompt callback.
This commit is contained in:
@@ -15,6 +15,7 @@ local Screen = require('test.functional.ui.screen')
|
||||
local mkdir = helpers.mkdir
|
||||
local clear = helpers.clear
|
||||
local eq = helpers.eq
|
||||
local exec = helpers.exec
|
||||
local exc_exec = helpers.exc_exec
|
||||
local exec_lua = helpers.exec_lua
|
||||
local exec_capture = helpers.exec_capture
|
||||
@@ -28,6 +29,7 @@ local pcall_err = helpers.pcall_err
|
||||
local assert_alive = helpers.assert_alive
|
||||
local poke_eventloop = helpers.poke_eventloop
|
||||
local feed = helpers.feed
|
||||
local expect_exit = helpers.expect_exit
|
||||
|
||||
describe('Up to MAX_FUNC_ARGS arguments are handled by', function()
|
||||
local max_func_args = 20 -- from eval.h
|
||||
@@ -312,3 +314,14 @@ it('no double-free in garbage collection #16287', function()
|
||||
sleep(10)
|
||||
assert_alive()
|
||||
end)
|
||||
|
||||
it('no heap-use-after-free with EXITFREE and partial as prompt callback', function()
|
||||
clear()
|
||||
exec([[
|
||||
func PromptCallback(text)
|
||||
endfunc
|
||||
setlocal buftype=prompt
|
||||
call prompt_setcallback('', funcref('PromptCallback'))
|
||||
]])
|
||||
expect_exit(command, 'qall!')
|
||||
end)
|
||||
|
Reference in New Issue
Block a user