WATANABE Akitsugu
aki****@de*****
2003年 8月 12日 (火) 10:25:19 JST
渡邊(Aki)です。 竹添さん、お疲れ様でした。 ところで、下記の無限ループ回避についてですが、 From: Naoki Takezoe <ADS28****@nifty*****> Subject: Re: [Fswiki-dev] 3.5.0dev3をアップロードしました > includeの無限ループについて補足します。 > > Includeプラグイン内部でインクルードしたページを記録することで > 無限ループしないように修正しましたが、2つのページから同一の > ページをインクルードしていて、さらに別のページから最初の2つの > ページをインクルードした場合などに不具合があります。 > > 図にすると以下のような感じです。 > > +-->ページ2--+ > | | > ページ1-+ +-->ページ4 > | | > +-->ページ3--+ > > この場合にページ1をみるとページ3からでページ4をインクルードしようと > するのですが、ページ4は既にページ2によってインクルードされているので > 無限ループ防止機能が作動し、インクルードに失敗してしまいます。 > > レアケースだと思うのでこのままでもいいかなーという気はしますが、 > 日記などで他の日付のページをインクルードしてる場合などは問題に > なるかもしれません。 インクルードしたページ名の代わりに、 (インクルード元のページ名, インクルードの引数リスト) を記録することで回避できるのではないでしょうか。 循環インクルードの場合には必ず元のインクルードを通過するので、 同じ(インクルード元のページ名, インクルードの引数リスト)が 出現します。 上記の例では 同じ(インクルード元のページ名, インクルードの引数リスト)は 出現しないため、誤認しなくなります。 # ただし、超レアケースとして # +-->ページ2のパラグラフ1--+ # | | # ページ1-+ +-->ページ3 # | | # +-->ページ2のパラグラフ2--+ # というケースで誤認して止まりますが... # # これも含めて回避する方法はありますが、さらに重たくなります。 ただ、私も元のケース自体がレアケースだと思うので このままでもいいかなーという気がします(笑 「深い」比較を行うので、比較演算が重たくなりますし。 -- WATANABE, Akitsugu (aki****@de*****)