vim-jp/issues — Issue #120: if_luaで解放済みメモリへの参照を引き起こせる
Author: koron
Created: 2012-01-07 09:31:53+00:00
State: open
Labels: bug

```vimL
" Create the buffer
split lua_dummy
setlocal buftype=nofile

" Print name of the buffer from Lua.
lua buf = vim.buffer('lua_dummy')
lua print('Phase#1', buf.name, ' isvalid=', buf:isvalid())

" Dispose the buffer.
bwipeout! lua_dummy

" Print name of the buffer again, but it have been released.
" So this will cause that access violation.
lua print('Phase#2', buf.name, ' isvalid=', buf:isvalid())
```

こんなスクリプトを実行すると `buf.name` が解放済みのメモリへの参照を引き起こす。もちろんLuaスクリプトの側で事前に `buf:isvalid()` を調べることで対処は可能だが、不正なメモリ参照を起こして良い理由にはならない。OSや環境によってはSEGVで落ちても文句は言えないだろう。