gracefully handle bogus stringOffset values (thanks to Anthony Fok)

git-svn-id: svn://svn.code.sf.net/p/fonttools/code/trunk@387 4cde692c-a291-49d1-8350-778aa11640f8
This commit is contained in:
jvr 2003-01-25 11:14:59 +00:00
parent 1332d3e549
commit aabca6d793

View File

@ -14,11 +14,19 @@ nameRecordFormat = """
offset: H
"""
nameRecordSize = sstruct.calcsize(nameRecordFormat)
class table__n_a_m_e(DefaultTable.DefaultTable):
def decompile(self, data, ttFont):
format, n, stringoffset = struct.unpack(">HHH", data[:6])
stringoffset = int(stringoffset)
expectedStringOffset = 6 + n * nameRecordSize
if stringoffset != expectedStringOffset:
# XXX we need a warn function
print "Warning: 'name' table stringoffset incorrect.",
print "Expected: %s; Actual: %s" % (expectedStringOffset, stringoffset)
stringoffset = expectedStringOffset
stringData = data[stringoffset:]
data = data[6:stringoffset]
self.names = []