Namazu-users-ja(旧)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: mknmz で .gz ファイルを処理中にコアダンプ
- From: knok@xxxxxxxxxxxxx (NOKUBI Takatsugu)
- Date: Fri, 6 Oct 2000 15:01:09 JST
- X-ml-name: namazu-users-ja
- X-mail-count: 01034
<39D5CDB0.15141482@xxxxxxxxx>の記事において
teranisi@xxxxxxxxxさんは書きました。
>> IRIX 5.3 の環境で、大きな .gz ファイルを mknmz で
>> 処理すると、コアダンプすることがわかりました。
この件なのですが、どれくらいのサイズで core dump しますか?
filter/gzip.pl から Compress::Zlib で展開する処理のみを取りだしたス
クリプトを作って試してみましたが、とりあえず 5MB 程度のファイルは問題
なく展開できました。
# Compress::Zlib 1.05 です。
--
野首 貴嗣
E-mail: knok@xxxxxxxxxxxxx (private)
nokubi@xxxxxxxxx (official)
# check-zlib.pl
use Compress::Zlib;
my $content;
while (<>) {
$content .= $_;
}
my $contref = \$content;
my $offset = 0;
$offset += 3;
my $flags = unpack('C', substr($$contref, $offset, 1));
$offset += 1;
$offset += 6;
$$contref = substr($$contref, $offset);
$$contref = substr($$contref, 2) if ($flags & 0x04);
$$contref =~ s/^[^\0]*\0// if ($flags & 0x08);
$$contref =~ s/^[^\0]*\0// if ($flags & 0x10);
$$contref = substr($$contref, 2) if ($flags & 0x02);
my $zl = inflateInit(-WindowBits => - MAX_WBITS());
my ($inf, $stat) = $zl->inflate($$contref);
if ($stat == Z_OK() or $stat == Z_STREAM_END()) {
$$contref = $inf;
} else {
$$contref = '';
return 'Bad compressed data.';
}
print $content;
exit 0;