*map プラグインが無限ループに陥り、Internal Server Error になる
*map プラグインが無限ループに陥り、Internal Server Error になる [#p865b6fb]

-ページ: BugTrack
-投稿者: [[mizkaz]]
-優先順位: 重要
-状態: 完了
-カテゴリー: プラグイン
-投稿日: 2003-04-16 (水) 15:43:15
-バージョン: 1.4

**メッセージ
**メッセージ [#h2332b10]
現象を絞り込めていないので、具体的な発生手順を書きます。

+FormatRule ページを削除
+InterWikiを起点としたサイトマップを表示させる

すると、僕のところでは Internal Server Error となります。
以下 URL に、ここのテスト用の環境で再現させました((ここの場合メモリが枯渇する))。

http://pukiwiki.sourceforge.jp/pukiwiki1.4/pukiwiki.php?plugin=map&refer=InterWiki

map プラグインの MapNode クラスの toString メソッドで無限ループに陥っているようです。
----
-参照ページから届かないページ(not related from)を列挙するときに、循環参照を止める番兵(parent_id=-1)を入れ忘れていました XD chainメソッド内でチェックするようにしたので、これで大丈夫だと思います。 -- [[ぱんだ]] &new{2003-04-17 (木) 11:02:48};
 --- map.inc.php	3 Apr 2003 01:36:49 -0000	1.9
 +++ map.inc.php	17 Apr 2003 02:02:15 -0000
 @@ -22,7 +22,7 @@
  */
  
  function plugin_map_action()
 -{ error_reporting(E_ALL);
 +{
  	global $vars,$whatsnew,$defaultpage;
  	
  	$reverse = array_key_exists('reverse',$vars);
 @@ -88,7 +88,6 @@
  	}
  	else
  	{
 -		$nodes[$refer]->parent_id = -1;
  		$nodes[$refer]->chain($nodes);
  		$retval['body'] .= "<ul>\n".$nodes[$refer]->toString($nodes)."</ul>\n";
  		$retval['body'] .= "<hr /><p>not related from ".htmlspecialchars($refer)."</p>\n";
 @@ -168,6 +167,12 @@
  			return;
  		}
  		$this->done = TRUE;
 +		
 +		if ($this->parent_id == 0)
 +		{
 +			$this->parent_id = -1;
 +		}
 +		
  		foreach ($this->rels as $page)
  		{
  			if (!array_key_exists($page,$nodes))
-cvsに投入しました。 [[cvs:plugin/map.inc.php]](v1.4:r1.10) -- [[ぱんだ]] &new{2003-04-17 (木) 11:09:39};
-大丈夫みたいですね。直りました。 -- [[mizkaz]] &new{2003-04-17 (木) 14:51:19};

#comment
//#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.051 sec.

SourceForge