New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
自動コマンドからタブ操作とバッファ削除するとSEGVする #933
Comments
サンプル1、サンプル2は解決。サンプル3は以下のパッチをあてても(落ちはしないけど)本来見えちゃダメな E315 が出るけど、 diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 7ec17b1..302d055 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -4389,6 +4389,11 @@ delbuf_msg(char_u *name)
name == NULL ? (char_u *)"" : name);
vim_free(name);
au_new_curbuf.br_buf = NULL;
+
+# ifdef FEAT_WINDOWS
+ if (curwin->w_buffer == NULL)
+ enter_buffer(curbuf);
+# endif
}
#endif このコードは buffer.c でもやられている手なのでそれほど悪い手ではないと思う。 |
patch作成してくださりありがとうございます。 サンプル1とサンプル2についてはSEGVが出なくなりました。 sample1a.vim: edit a.txt
augroup sample
autocmd!
autocmd BufWinLeave <buffer> tabfirst | 2bw!
augroup END
edit b.txt
tabedit
tabfirst
quit sample2a.vim: setlocal buftype=nowrite
augroup sample
autocmd!
autocmd BufWinLeave <buffer> tabfirst | 2bw
augroup END
normal! i1
edit a.txt
call feedkeys("\<CR>")
tabedit
tabfirst
quit |
まっつんさんのpatchに変更を加えました。 残るは |
そう、sample3 がなかなか手ごわい。 |
patch更新。このissueで報告されている問題すべて解決したと思います。
|
あぅ、 |
Fixed:+1: |
ご対応ありがとうございます。 |
@norio13 確認ありがとうございます。patch更新しました。(Rev. 4) |
@h-east patch(Rev.4)適用でSEGVしなくなりました。 |
このpatchですが、autocommandでカレントタブページが移動したらその時点でメッセージも出さずに処理を終わらせているのでよろしくない気がしています。 |
patch 7.4.2312 by Bram 残念ながらsample1.vimとsample2.vimは現時点の最新(7.4.2312)でもSEGVします。 |
patch前のtestでSEGVしないけど、諦めてvim_devに投げました。 |
調査と報告ありがとうございます。 vim 7.4.2322 |
@norio13 7.4.2323 + 私が投げたpatchだと落ちないです。 |
@h-east sample1.vimとsample2.vimの分のみ報告されたのだと勝手に勘違いしてました。 |
patch 7.4.2324 patch 7.4.2328 @norio13 説明不足でした。以前作成したpatch(sample1~3全対応)がpatch 7.4.2312(sample3が直ったと思われるもの)とconflictを起こしたので手動でマージして新しくpatchを作成しました。なのでごちゃ混ぜです。 |
7.4.2330で全てのscript(sample1~3, sample1a, sample2a)がSEGVしないことを確認しました。 |
質問・報告の内容
SEGVするコードを見つけたので報告します。
サンプル1
vim -Nu NONE -S sample1.vim
:bw!で再現します。:bun!と:bd!では再現しません。
再現するイベント
再現しないイベント
サンプル2
vim -Nu NONE -S sample2.vim
:bw!で再現します。:bun!と:bd!では再現しません。:bwで再現します。:bunと:bdでは再現しません。
再現するイベント
再現しないイベント
サンプル3
vim -Nu NONE -S sample3.vim
再現するイベント
再現しないイベント
Vimのバージョン
7.4.2038
OSの種類/ディストリ/バージョン
Linux Debian 8.5 (jessie) 64bit
The text was updated successfully, but these errors were encountered: