diff options
| author | glepnir <glephunter@gmail.com> | 2025-07-23 08:40:24 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-07-22 17:40:24 -0700 |
| commit | 4fe51dfdae84f139bb92f8517aff914c4adb052c (patch) | |
| tree | f4243b093c37f42e579af4d88bbd93f6364e99e4 /runtime/lua/vim/iter.lua | |
| parent | 1685c44dd463217db01643a97163420ed9f5b177 (diff) | |
fix(iter): ArrayIter:last returns nil when filtered to empty #34697
Problem: After filtering out all elements, ArrayIter:last still returns a stale element.
Solution: Add check for self._head == self._tail and return nil early.
Fix #34696
Diffstat (limited to 'runtime/lua/vim/iter.lua')
| -rw-r--r-- | runtime/lua/vim/iter.lua | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/runtime/lua/vim/iter.lua b/runtime/lua/vim/iter.lua index c1dd20f745..f3062564ce 100644 --- a/runtime/lua/vim/iter.lua +++ b/runtime/lua/vim/iter.lua @@ -1010,6 +1010,9 @@ end ---@private function ArrayIter:last() + if self._head >= self._tail then + return nil + end local inc = self._head < self._tail and 1 or -1 local v = self._table[self._tail - inc] self._head = self._tail |
