[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00714] Re: カレントディレクトリをmvしたあと再描画時にSEGV
- Subject: [FDclone-users:00714] Re: カレントディレクトリをmvしたあと再描画時にSEGV
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Tue, 22 May 2007 20:59:39 +0900
しらいです。
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 ----
しらい たかし