.NET Deflate Stream Ошибка / Ошибка

Кто-нибудь испытывал следующую ошибку при использовании.NET Deflate Stream?

System.IndexOutOfRangeException: индекс находился за пределами массива.
 в System.IO.Compression.HuffmanTree.CreateTable()
 в System.IO.Compression.Inflater.DecodeDynamicBlockHeader()
 в System.IO.Compression.Inflater.Decode()
 в System.IO.Compression.Inflater.Inflate(байт [] байт, смещение Int32, длина Int32)
 в System.IO.Compression.DeflateStream.Read(массив Byte[], смещение Int32, число Int32)

Эта ошибка возникает при распаковке потока дефлята, считываемого с диска. Я использую простые индексированные файлы с большим количеством маленьких закодированных фрагментов с дефляцией. Это очень редкая ошибка, так как только один сжатый элемент из нескольких сотен тысяч (или миллионов) испытывает эту ошибку.

Похоже, что исключение метода HuffmanTree.CreateTable и процедура пытаются заполнить массив за его пределами.

Я попытался выделить массив, который в два раза больше исходного, для декомпрессии, и он все равно выдает ошибку.

Декодированные данные кажутся неповрежденными, однако процедура продолжает пытаться декодировать и переполняет буфер.

Я полагаю, я мог бы просто попытаться / поймать и обнаружить, если эта ошибка происходит, а затем попытаться справиться с ней.

Любое понимание проблемы будет оценено.

(Я пробовал DotNetZip, который вызывает различные проблемы в 64-битной среде, в которой я работаю.)

0 ответов

Другие вопросы по тегам