A new version was officially released yesterday, version 1.2.1. Given that the "incremental" version number changed, you know that this is a small release. So true. Let's see what's in it, though.
First off, two new skins were added. Here is the Simplicity skin by Zepfan:
And here is the JX 720 skin by Steveb:
As far as bug fixes go, there are several that were handled in here. Only 1 of them is even worth mentioning, though, and it only because of its simplicity and the difficulty I had in finding it. For a certain user, the AVI parser was breaking on one of his files. We went back and forth several times, each time I added additional debugging code. I finally narrowed it down.
When reading a chunk of data, I had this code:
def read(self, thefile):
data = thefile.read(4)
try:
self.size = struct.unpack('i', data)[0]
except:
self.size = 0
# Putting an upper limit on the chunk size, in case the file is corrupt
if self.size < 10000:
self.chunk = thefile.read(self.size)
else:
self.chunk = ''
self.size = struct.unpack('i', data)[0]
except:
self.size = 0
# Putting an upper limit on the chunk size, in case the file is corrupt
if self.size < 10000:
self.chunk = thefile.read(self.size)
else:
self.chunk = ''
The point of this is that it will read in the data associated with the chunk. Not a big deal...read the size itself, and then read the data. I even limit the amount of data to read just in case the file is corrupt. I missed something important, though: the size value is signed. This means that in a file that is corrupt, I may read a negative number. In Python, performing a read with a negative size will read in the entire file, causing problems. So the fix was simple:
if self.size > 0 and self.size < 10000:
self.chunk = thefile.read(self.size)
else:
self.chunk = ''
self.chunk = thefile.read(self.size)
else:
self.chunk = ''
Not a big deal.
Next time I'll discuss some of the things going into 1.3.0.
No comments:
Post a Comment