[Fswiki-dev] 3.5.0dev3をアップロードしました

Zurück zum Archiv-Index

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*****)



Fswiki-dev メーリングリストの案内
Zurück zum Archiv-Index