[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FDclone-users:00714] Re: カレントディレクトリをmvしたあと再描画時にSEGV



 しらいです。

In Message-Id <200705220136.l4M1aoWd068214@www.fubako.com>
        hironao@fubako.comさんwrites:
> 小松です。

>  mkdir hoge
>  fd hoge
>  (別のシェルなどで) mv hoge fuga
>  (FDで) Ctrl+L
> 
> このとき、info.c:908:getfsinfoで
> 
> if (_chdir2(fullpath) < 0) error(fullpath);
> 
> _chdir2がエラーを返しerrorが呼ばれるのですが、この過程で
> 再びgetfsinfoを呼び、またエラーが発生するため循環するのが
> 原因のようです。

 このバグは既に修正済で 3.00 には採り入れる予定です。条件は
ここで挙げられた以外にも幾つかありますが、一般的な操作では再
現しないので、2.09e を出す程のことはないかと思っていました。
 一応 patch を付けておきますが、このタイミングで 2.09e を出
すのは難しい状況なので、どうしても必要かどうかみなさんで吟味
して頂けますか。

---- Cut Here ----
--- ../old/FD-2.09d/main.c	Thu Apr 26 00:00:00 2007
+++ ./main.c	Sun May 20 16:14:02 2007
@@ -233,9 +233,14 @@
 VOID error(s)
 CONST char *s;
 {
+	static int doing = 0;
 	int duperrno;
 
+	if (doing == 1) exit2(2);
+	if (doing == 2) exit(2);
 	duperrno = errno;
+	doing = 1;
+
 	sigvecset(0);
 	if (isorgpid()) {
 		forcecleandir(deftmpdir, tmpfilename);
@@ -255,6 +260,7 @@
 		fputnl(stderr);
 	}
 	fclose(stderr);
+	doing = 2;
 
 	if (isorgpid()) {
 		inittty(1);
---- Cut Here ----

                                               しらい たかし