Fix #4896 ("Send to device" cannot handle gigabyte sized files)

This commit is contained in:
Kovid Goyal 2010-02-16 12:04:21 -07:00
parent 24154c259d
commit 75975a2023

View File

@ -1,7 +1,7 @@
from calibre.ebooks.metadata import authors_to_string from calibre.ebooks.metadata import authors_to_string
__license__ = 'GPL v3' __license__ = 'GPL v3'
__copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>' __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
import os, textwrap, traceback, re import os, textwrap, traceback, re, shutil
from operator import attrgetter from operator import attrgetter
from math import cos, sin, pi from math import cos, sin, pi
@ -469,8 +469,10 @@ class BooksModel(QAbstractTableModel):
break break
if format is not None: if format is not None:
pt = PersistentTemporaryFile(suffix='.'+format) pt = PersistentTemporaryFile(suffix='.'+format)
pt.write(self.db.format(id, format, index_is_id=True)) src = self.db.format(id, format, index_is_id=True, as_file=True)
shutil.copyfileobj(src, pt)
pt.flush() pt.flush()
pt.seek(0)
if set_metadata: if set_metadata:
_set_metadata(pt, self.db.get_metadata(id, get_cover=True, index_is_id=True), _set_metadata(pt, self.db.get_metadata(id, get_cover=True, index_is_id=True),
format) format)