.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-битной среде, в которой я работаю.)