Namazu-devel-ja(旧)


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

mknmz / html.pl problem.



Namazu 開発者様

東京電機大学の渡部と申します。

mknmz の不具合を発見いたしましたので、ご報告いたします(既知/解決済み/
こちらの勘違いでしたらご容赦ください)。

問題点
------

サイズの大きめのある特定のHTMLファイルがインデックスの対象にある時、
mknmz が事実上停止しない。

環境
----

Namazu 2.0.5 (Debian パッケージ 2.0.5-2)
Linux 2.2.17 (Debian GNU/Linux woody)
Perl 5.006
module_kakasi -ieuc -oeuc -w
nkf 1.9

(知人の Plamo 2.0 + Namazu 2.0.5 + perl 5.005_02 でも同症状を確認)

問題個所
--------

filter/html.pl::weight_element の

$$contref =~ s!<($element)>(.*?)</$element>!weight_element_sub($1, $2,\$tmp)!gies;

が停止しない。s/// で i オプションを指定しているため、正規表現処理が非
常に時間がかかっているものと思われる。iオプションをとりのぞき、

$$contref =~ s!<($element)>(.*?)</$element>!weight_element_sub($1, $2,\$tmp)!ges;

とすると、問題のファイルでもすぐに先へ進む(ただし、i オプションがない
ため大文字小文字が区別される)。

なお、問題のファイルの例として:

http://www.s99.co.jp/phpdoc/bimanual.html

がある(手元にダウンロードし、そのファイルのみを含めたディレクトリに対
して mknmz を実行することにより再現)。

ファイルサイズが大きいが、config の $FILE_SIZE_MAX, $TEXT_SIZE_MAX で
のチェックは上記問題コードを処理後行われるため、ファイルサイズによる除
外はできない。




以上です。お役にたてば幸いです。

---
渡部 喜正 (WATANABE Yoshimasa) <naney@xxxxxxxxx>
  http://www.naney.org/