Кто-нибудь испытывал следующую ошибку при использовании .NET Deflate Stream?
System.IndexOutOfRangeException: Index was outside the bounds of the array.
at System.IO.Compression.HuffmanTree.CreateTable()
at System.IO.Compression.Inflater.DecodeDynamicBlockHeader()
at System.IO.Compression.Inflater.Decode()
at System.IO.Compression.Inflater.Inflate(Byte[] bytes, Int32 offset, Int32 length)
at System.IO.Compression.DeflateStream.Read(Byte[] array, Int32 offset, Int32 count)
Эта ошибка возникает при распаковке дефлированного потока, считываемого с диска. Я использую простые индексированные файлы с большим количеством маленьких кодированных фрагментов с дефляцией. Это очень редкая ошибка, так как только один сжатый элемент из нескольких сотен тысяч (или миллионов) испытывает эту ошибку.
Похоже, что исключение метода HuffmanTree.CreateTable и процедура пытаются заполнить массив за его пределами.
Я попытался выделить для декомпрессии массив, который в два раза больше исходного, и он все равно выдает ошибку.
Кажется, что декодированные данные не повреждены, однако процедура продолжает пытаться декодировать и переполняет буфер.
Полагаю, я мог бы просто попытаться / поймать и определить, произошла ли эта ошибка, а затем попытаться устранить ее.
Любое понимание проблемы будет оценено.
(Я пробовал DotNetZip, который вызывает различные проблемы в 64-битной среде, в которой я работаю.)