Fix bug in lrf-meta that could cause corrupted LRF files when setting metadata.

This commit is contained in:
Kovid Goyal 2008-06-30 11:39:09 -07:00
parent 3cf05b8f66
commit 0b0346884f

View File

@ -375,7 +375,8 @@ class LRFMetaFile(object):
delta = insert_into_file(self._file, stream, self.info_start, \ delta = insert_into_file(self._file, stream, self.info_start, \
self.info_start + orig_size - 4) 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.object_index_offset += delta
self.update_object_offsets(delta) self.update_object_offsets(delta)
@ -480,7 +481,7 @@ class LRFMetaFile(object):
@param args: The values to pack @param args: The values to pack
@param fmt: See U{struct<http://docs.python.org/lib/module-struct.html>} @param fmt: See U{struct<http://docs.python.org/lib/module-struct.html>}
@param start: Position in file at which to write encoded data @param start: Position in file at which to write encoded data
""" """
encoded = struct.pack(kwargs["fmt"], *args) encoded = struct.pack(kwargs["fmt"], *args)
self._file.seek(kwargs["start"]) self._file.seek(kwargs["start"])
self._file.write(encoded) self._file.write(encoded)
@ -685,3 +686,4 @@ def main(args=sys.argv):
if __name__ == '__main__': if __name__ == '__main__':
sys.exit(main()) sys.exit(main())