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

[FDclone-users:00402] Re: FIND_FILE で存在しないファイルを指定した後の挙動



 しらいです。

In Message-Id <050607203804.M0304487@mix.syd.odn.ne.jp>
        hma@syd.odn.ne.jpさんwrites:
> 濱崎です。

> FIND_FILE で検索したファイルが存在しなかった場合、
> 最下行に しばらくお待ちください. と表示されたままになり、
> ファイルがありません
> の表示に進みません。

 むむむ。2.07 をいきなり出すと大量に em-bug してそうだった
んで、まずは 2.06d で様子見と思ったんですが、2.06d は余り使
い倒されていなかったようですね。


> 2.06c では発生しません。
> 記憶が曖昧ですが、2.06d では発生していたように思います。
> 端末周りの変更の副作用でしょうか?

 そうではなくて単に安全装置が必要以上に効き過ぎてしまったみ
たいですね。

 カーソル位置を表す index 値が、ファイル総数を越えた数を指
してしまうことがままあって、この場合カーソル位置のファイルを
表示しようとするとセグメント違反が生じます。
 なのでカーソル位置が総数を越えないことを確認してから表示さ
せるように改めたのですが、総数がゼロの時だけはどっちの値もゼ
ロになってしまうので「カーソル位置が総数を越えた」と見なされ
てしまっていました。

 という訳でこういう patch でどうでしょう。

---- Cut Here ----
diff -u ../old/FD-2.07/browse.c ./browse.c
--- ../old/FD-2.07/browse.c	Thu May 26 00:00:00 2005
+++ ./browse.c	Tue Jun  7 21:23:14 2005
@@ -1175,12 +1175,14 @@
 			if (custno >= 0) rewritecust();
 			else
 # endif
-			if (filelist && filepos < maxfile)
+			if (filelist
+			&& (filepos < maxfile || (!filepos && !maxfile)))
 				n = listupfile(filelist, maxfile, def, 1);
 			x = win_x;
 			y = win_y;
 		}
-		else if (filelist && filepos < maxfile)
+		else if (filelist
+		&& (filepos < maxfile || (!filepos && !maxfile)))
 			listupfile(filelist, maxfile,
 				filelist[filepos].name, 0);
 	}
---- Cut Here ----

                                               しらい たかし