From 5c61a2da48f214c4994ff03a1bdd511d4e5dc898 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 23 May 2012 23:57:53 +0530 Subject: [PATCH] MOBI Output: When generating joint KF8/MOBI6 .mobi files set the text length field in the MOBI 6 header correctly. Fixes #1003489 (Calibre .52. MOBI 6 created with KF8 Plugin crashes at the last ncx item.) --- src/calibre/ebooks/mobi/debug/headers.py | 1 + src/calibre/ebooks/mobi/writer2/main.py | 1 + 2 files changed, 2 insertions(+) diff --git a/src/calibre/ebooks/mobi/debug/headers.py b/src/calibre/ebooks/mobi/debug/headers.py index b38af77774..6aaafbffa3 100644 --- a/src/calibre/ebooks/mobi/debug/headers.py +++ b/src/calibre/ebooks/mobi/debug/headers.py @@ -377,6 +377,7 @@ class MOBIHeader(object): # {{{ a('Compression: %s'%self.compression) a('Unused: %r'%self.unused) + a('Text length: %d'%self.text_length) a('Number of text records: %d'%self.number_of_text_records) a('Text record size: %d'%self.text_record_size) a('Encryption: %s'%self.encryption_type) diff --git a/src/calibre/ebooks/mobi/writer2/main.py b/src/calibre/ebooks/mobi/writer2/main.py index a1b5c06e33..e9f10a605e 100644 --- a/src/calibre/ebooks/mobi/writer2/main.py +++ b/src/calibre/ebooks/mobi/writer2/main.py @@ -411,6 +411,7 @@ class MobiWriter(object): header_fields['fdst_count'] = 1 # Why not 0? Kindlegen uses 1 header_fields['flis_record'] = flis_number header_fields['fcis_record'] = fcis_number + header_fields['text_length'] = self.text_length extra_data_flags = 0b1 # Has multibyte overlap bytes if self.primary_index_record_idx is not None: extra_data_flags |= 0b10