diff --git a/src/calibre/ebooks/metadata/mobi.py b/src/calibre/ebooks/metadata/mobi.py index ffdef77d11..15fdceff15 100644 --- a/src/calibre/ebooks/metadata/mobi.py +++ b/src/calibre/ebooks/metadata/mobi.py @@ -259,6 +259,7 @@ class MetadataUpdater(object): trail = len(new_record0.getvalue()) % 4 pad = '\0' * (4 - trail) # Always pad w/ at least 1 byte new_record0.write(pad) + new_record0.write('\0'*(1024*8)) # Rebuild the stream, update the pdbrecords pointers self.patchSection(0,new_record0.getvalue()) diff --git a/src/calibre/ebooks/mobi/debug.py b/src/calibre/ebooks/mobi/debug.py index 36aba39d65..86ed3e9ef9 100644 --- a/src/calibre/ebooks/mobi/debug.py +++ b/src/calibre/ebooks/mobi/debug.py @@ -274,7 +274,7 @@ class MOBIHeader(object): self.exth = EXTHHeader(self.raw[self.exth_offset:]) self.end_of_exth = self.exth_offset + self.exth.length - self.bytes_after_exth = len(self.raw) - self.end_of_exth + self.bytes_after_exth = self.fullname_offset - self.end_of_exth def __str__(self): ans = ['*'*20 + ' MOBI Header '+ '*'*20] @@ -321,6 +321,9 @@ class MOBIHeader(object): ans += '\n\n' + str(self.exth) ans += '\n\nBytes after EXTH: %d'%self.bytes_after_exth + ans += '\nNumber of bytes after full name: %d' % (len(self.raw) - (self.fullname_offset + + self.fullname_length)) + ans += '\nRecord 0 length: %d'%len(self.raw) return ans diff --git a/src/calibre/ebooks/mobi/writer.py b/src/calibre/ebooks/mobi/writer.py index fc47b26c02..ddcba63eca 100644 --- a/src/calibre/ebooks/mobi/writer.py +++ b/src/calibre/ebooks/mobi/writer.py @@ -1511,7 +1511,7 @@ class MobiWriter(object): record0.write(exth) record0.write(title) record0 = record0.getvalue() - self._records[0] = record0 + ('\0' * (2452 - len(record0))) + self._records[0] = record0 + ('\0' * (1024*8)) def _build_exth(self): oeb = self._oeb