From 709099ddf1232313af1cef84faf3fb8813df3af1 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 17 Jul 2011 10:11:28 -0600 Subject: [PATCH] ... --- src/calibre/ebooks/mobi/debug.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/calibre/ebooks/mobi/debug.py b/src/calibre/ebooks/mobi/debug.py index 32455d0cf8..e73571cc00 100644 --- a/src/calibre/ebooks/mobi/debug.py +++ b/src/calibre/ebooks/mobi/debug.py @@ -367,14 +367,18 @@ class TagX(object): def __init__(self, raw, control_byte_count): self.tag = ord(raw[0]) self.num_values = ord(raw[1]) - self.bitmask = bin(ord(raw[2])) + self.bmask = ord(raw[2]) + self.bitmask = bin(self.bmask) # End of file = 1 iff last entry # When it is 1 all others are 0 self.eof = ord(raw[3]) + self.is_eof = (self.eof == 1 and self.tag == 0 and self.num_values == 0 + and self.bmask == 0) + def __repr__(self): - return 'TAGX(tag=%02d, num_values=%d, bitmask=%r, eof=%d)' % (self.tag, - self.num_values, self.bitmask, self.eof) + return 'TAGX(tag=%02d, num_values=%d, bitmask=%r (%d), eof=%d)' % (self.tag, + self.num_values, self.bitmask, self.bmask, self.eof) class PrimaryIndexRecord(object): @@ -424,6 +428,8 @@ class PrimaryIndexRecord(object): for i in range(num_tagx_entries): self.tagx_entries.append(TagX(tag_table[i*4:(i+1)*4], self.tagx_control_byte_count)) + if self.tagx_entries and not self.tagx_entries[-1].is_eof: + raise ValueError('TAGX last entry is not EOF') def __str__(self):