vim-jp/issues — Issue #88: autoloadスクリプト読み込み中にCTRL-Cをタイプすると落ちる
Author: mattn
Created: 2011-10-28 02:15:59+00:00
State: open

事象が落ちるという物なので、 @ynkdir さんが直接vim_devにポストしてくれていますが、万が一眠ってしまわないように。

https://groups.google.com/d/topic/vim_dev/TeJPUp9KcYk/discussion

autoloadスクリプト内で関数外でループし、その最中にCTRL-Cをタイプすると落ちる様です。Windowsでも再現しました。

以下 @ynkdir さんのパッチ

```diff
diff -r 37ecb8ff4560 src/eval.c
--- a/src/eval.c	Thu Oct 20 22:22:38 2011 +0200
+++ b/src/eval.c	Thu Oct 27 20:49:16 2011 +0900
@@ -19589,9 +19589,12 @@
* worked find the variable again. Don't auto-load a script if it was
* loaded already, otherwise it would be loaded every time when
* checking if a function name is a Funcref variable. */
-	if (ht == &globvarht && !writing
-	&& script_autoload(varname, FALSE) && !aborting())
+	if (ht == &globvarht && !writing)
+	{
+	if (!script_autoload(varname, FALSE) || aborting())
+	return NULL;
hi = hash_find(ht, varname);
+	}
if (HASHITEM_EMPTY(hi))
return NULL;
}
```

autoloadスクリプトの読み込みが完了していない扱いになるので、中断処理 `aborting()` を見ないと処理が継続してしまう...というところでしょうか。