This commit is contained in:
Kovid Goyal 2011-03-07 10:10:34 -07:00
commit 868d4ce31a

View File

@ -75,15 +75,20 @@ class SNBFile:
for i in range(self.plainBlock): for i in range(self.plainBlock):
bzdc = bz2.BZ2Decompressor() bzdc = bz2.BZ2Decompressor()
if (i < self.plainBlock - 1): if (i < self.plainBlock - 1):
bSize = self.blocks[self.binBlock + i + 1].Offset - self.blocks[self.binBlock + i].Offset; bSize = self.blocks[self.binBlock + i + 1].Offset - self.blocks[self.binBlock + i].Offset
else: else:
bSize = self.tailOffset - self.blocks[self.binBlock + i].Offset; bSize = self.tailOffset - self.blocks[self.binBlock + i].Offset
snbFile.seek(self.blocks[self.binBlock + i].Offset); snbFile.seek(self.blocks[self.binBlock + i].Offset)
try: try:
data = snbFile.read(bSize) data = snbFile.read(bSize)
uncompressedData += bzdc.decompress(data) if len(data) < 32768:
uncompressedData += bzdc.decompress(data)
else:
uncompressedData += data
except Exception, e: except Exception, e:
print e print e
if len(uncompressedData) != self.plainStreamSizeUncompressed:
raise Exception()
f.fileBody = uncompressedData[plainPos:plainPos+f.fileSize] f.fileBody = uncompressedData[plainPos:plainPos+f.fileSize]
plainPos += f.fileSize plainPos += f.fileSize
elif f.attr & 0x01000000 == 0x01000000: elif f.attr & 0x01000000 == 0x01000000: