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

[FDclone-users:00967] Re: LOG_DIR from within archive browser causes SEGV



 しらいです。

In Message-Id <86sjghl1sf.knu@iDaemons.org>
        "Akinori MUSHA" <knu@iDaemons.org>さんwrites:
> 遅くなりましたが、試す時間が取れましたので報告します。

 わざわざ検証して頂いたんですが、実はあの対応では不完全なこ
とが判明したので、時間の無駄使いをさせてしまったかも知れませ
ん。申し訳ない。


> >  落ちるか否かが表示ファイル数に依存していたようですね。その
> > 依存性を取り除いてみました。先の patch は破棄してこちらをお
> > 試し下さい。
> 
> これで直ったようです。

 確かに archive browser だけの話ならばこれで大丈夫なのです
が、他のケースも含めて考えると根治してはいませんでした。
 そもそもの原因は、再描画時のカーソル位置を一覧の filename
から取得しようとしている点にあります。色々小細工はしているの
ですが、コマンドによっては一覧自体が破棄されてしまいます。
 破棄された一覧の元のカーソル位置に、次の再描画でカーソルを
置くべき filename を置いているのですが、破棄時の状況によって
は先の patch でも不十分でした。
 なので、window 毎にカーソル位置の filename を記憶させてお
くように実装を改めました。

 なお、この副作用で LOG_DIR や cd による directory 移動時の
カーソル位置に関する仕様が一部変更になってしまいました。
 従来は、OUT_DIR による移動時のみ直前の directory にカーソ
ル移動させていましたが、LOG_DIR や cd で .. に移動した場合も
同じ処理になります。
 更には、../.. のように孫やひ孫の directory から移動した場
合も直系の子にあたる directory にカーソル移動します。慣れな
いと気持ち悪いかも知れません。
 特別の処理を追加すれば従来仕様に戻すことも不可能ではないの
で、この仕様変更に関して異論がある場合はお聞かせ下さい。他に
考えられる選択肢は下記くらいでしょうか。
	1.OUT_DIR 以外はカーソル移動しない。(既定値は「..」)
	2.カーソル移動は子の時のみ。孫やひ孫では禁止。
	3.directory 移動に伴うカーソル移動は全面禁止。


> >  取り敢えず、archive browser で使用禁止の internal command
> > は command line 実行も禁止して、他の command も終了後に必ず
> > CWD を元に戻すようにしてみました。
> 
> あまりいろいろは試していませんが、 cd については
> 
>         cd / && ls
> 
> が意図通り実行され、復帰するとCWDが戻っていることを確認しました。

 この挙動は従来の LOG_DIR 仕様と異なっていることに気づきま
した。archive browser 内で LOG_DIR により archive 外に移動し
た場合は、MUSHA さんの提案通り archive browser を終了します。
 CWD を戻すと cd だけでなく LOG_DIR の仕様まで変更されてし
まうので、従来との継承性が失われてしまいます。なので考えを改
め、cd の場合も LOG_DIR 同様の処理にしてみました。
 pushd/popd を含めて directory 移動系のコマンドは全て統合し
たので、archive browser 内の directory 移動にも全て対応して
います。


 という訳で patch です。この措置による変更箇所が多かったの
で、わざわざ FD-3.00j をベースに今回の措置のみ適用したものか
差分を生成するという手の込んだことをしています。
 普段はその逆で、最新版との差分から無関係な箇所を削除してい
たのですが、今回のやり方だと適用ミスによる embug の可能性も
あるので、その点はご容赦下さい。
 更に、mail に添付するには大き過ぎるサイズになってしまった
ので、FTP server に置いておきました。ML に置いとくと後で記録
として読み返せて嬉しいんですけどね。
ftp://ftp.unixusers.net/src/beta/fdclone/FD-3.00j-patch.txt

 code freeze に関しては暫く延長することにしますので、まずは
この patch に関して妥当性の検証をお願いします。

                                               しらい たかし