Namazu-devel-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Q] エラー処理はこれで正しいのでしょうか ?
- From: teranisi@xxxxxxxxx
- Date: Mon, 27 Nov 2000 20:32:32 +0900
- X-ml-name: namazu-devel-ja
- X-mail-count: 01109
寺西です。
perl について詳しくないので、namazu の質問というより perl の
質問のような気もするのですが、気になるので質問させてください。
namazu-2.0.5 のソースです。
namazu には、エラー時の処理が甘いのではないか?と思われる
ところが随所にあるような気がしています。例えば、
filter/compress.pl 57行目
sub filter ($$$$$) {
my ($orig_cfile, $cont, $weighted_str, $headings, $fields)
= @_;
my $tmpfile = util::tmpnam('NMZ.compr');
util::vprint("Processing compress file ... (using '$zcatpath')\n");
my $fh = util::efopen("|$zcatpath > $tmpfile");
print $fh $$cont;
undef $fh;
$fh = util::efopen("$tmpfile");
my $size = util::filesize($fh);
if ($size > $conf::FILE_SIZE_MAX) {
return 'too_large_gzipped_file';
}
$$cont = util::readfile($fh);
undef $fh;
unlink $tmpfile;
return undef;
}
という関数があり、FILE_SIZE_MAX より大きい場合に
return しますが、この時、
$fh->close();
undef $fh;
unlink $tmpfile;
という処理は不要なのでしょうか?
そういうところが随所にあるのですが、何だか気持ちが悪いのです。
大量に処理していると、どんどんメモリを消費していくのは、
こういった部分が原因ではないのかと思いまして。
# 仕方がないので、--checkpoint を付けていますが、これって
# あまり美しくはないですよね。
# 実は 2.04 までmknmzできたものが 2.05 は途中で停まって
# 困っております。只今、調査中です。
--
寺西