mirror of
https://github.com/neovim/neovim.git
synced 2026-09-03 21:00:34 +00:00
fix(loader): remove all cached loaders on disable #41613
Problem: When disabling, the loader list is traversed forwards while entries are removed. As a result, some entries are skipped and remain active. Thus, disabling `vim.loader` restores `_G.loadfile`, but does not fully restore the original package loader chain. Solution: Traverse `package.loaders` in reverse when removing cached loaders. Capture the original `package.loaders` list in the test, and assert that the list is restored properly.
This commit is contained in:
committed by
GitHub
parent
350fa5ad7c
commit
5bc7dbb13e
@@ -452,7 +452,8 @@ function M.enable(enable)
|
||||
end
|
||||
else
|
||||
_G.loadfile = _loadfile
|
||||
for l, loader in ipairs(loaders) do
|
||||
for l = #loaders, 1, -1 do
|
||||
local loader = loaders[l]
|
||||
if loader == loader_cached or loader == loader_lib_cached then
|
||||
table.remove(loaders, l)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user