トップ 差分 一覧 Farm ソース 検索 ヘルプ RSS ログイン

BugTrack-wiki/329

ページの作成や編集にはユーザ登録が必要です。

インデックスファイルに不整合が生じる

  • 投稿者: joe
  • カテゴリ: 本体
  • 優先度: 重要
  • 状態: リリース済
  • 日時: 2009年02月05日 17時23分37秒

 内容

 FSWiki 3.6.3.1で以下の問題を確認しています。

現象

 インデックスファイルが作られていない状態で、

  • 新規ページの保存を行うと、データファイルは保存されるが一覧に現れない(インデックスファイルに記録されない)
  • 既存ページの削除を行うと、データファイルは削除されるが一覧に残る(インデックスファイルから削除されない)

 通常はカテゴリーの表示などでインデックスファイルが作成されるので、希なケースだと思います。

原因

 DefaultStorage.pmではページの保存や削除の直前に_create_page_list_file()を呼び出しインデックスファイルの更新を行いますが、インデックスファイルが存在しないときは作成だけ行います。このとき新規ページのデータファイル(*.wiki)は存在しないのでインデックスファイルに記録されません。また削除するページのデータファイルはこの時点では削除されていないのでインデックスファイルに記録されることになります。この不整合はインデックスファイルを削除し、新たに作り直すまで残ります。

解決法

 インデックスファイルを作成した後、改めてインデックスへページ名の追加や削除を行うようにします。

--- DefaultStorage.pm.old
+++ DefaultStorage.pm
@@ -202,7 +202,7 @@
 		}
 		closedir(DIR);
 		Util::save_config_text(undef, $file, $buf);
-	} else {
+	}
 		if($flag eq "remove"){
 			my $names = Util::load_config_text(undef, $file);
 			$names =~ s/(^|\n)\Q$page\E\n/\n/;
@@ -214,7 +214,6 @@
 			print DATA "$page\n";
 			close(DATA);
 		}
-	}
 }
 
 #------------------------------------------------------------------------------

 または、データファイルの保存や削除の後に_create_page_list_file()を呼び出すようにするのが良いと思います。

 コメント

  • ご指摘ありがとうございます。修正をコミットしました。 - たけぞう (2009年08月12日 16時38分23秒)
お名前: コメント:

最終更新時間:2010年10月24日 00時50分27秒