From 0b0346884f18deb468a173913b3ea42e2f4aaf69 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 30 Jun 2008 11:39:09 -0700 Subject: [PATCH] Fix bug in lrf-meta that could cause corrupted LRF files when setting metadata. --- src/calibre/ebooks/lrf/meta.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/calibre/ebooks/lrf/meta.py b/src/calibre/ebooks/lrf/meta.py index 9c2882dcee..80fc542c1c 100644 --- a/src/calibre/ebooks/lrf/meta.py +++ b/src/calibre/ebooks/lrf/meta.py @@ -375,7 +375,8 @@ class LRFMetaFile(object): delta = insert_into_file(self._file, stream, self.info_start, \ self.info_start + orig_size - 4) - self.toc_object_offset += delta + if self.toc_object_offset > 0: + self.toc_object_offset += delta self.object_index_offset += delta self.update_object_offsets(delta) @@ -480,7 +481,7 @@ class LRFMetaFile(object): @param args: The values to pack @param fmt: See U{struct} @param start: Position in file at which to write encoded data - """ + """ encoded = struct.pack(kwargs["fmt"], *args) self._file.seek(kwargs["start"]) self._file.write(encoded) @@ -685,3 +686,4 @@ def main(args=sys.argv): if __name__ == '__main__': sys.exit(main()) +