From cde906b9364dfb2b18df100052e31b2b7d8ffd3d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 16 Jun 2016 08:17:47 +0530 Subject: [PATCH] Allow passing in bytestrings as replacements, not just file like objects --- src/calibre/utils/zipfile.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/calibre/utils/zipfile.py b/src/calibre/utils/zipfile.py index 768d46badd..a3656e9935 100644 --- a/src/calibre/utils/zipfile.py +++ b/src/calibre/utils/zipfile.py @@ -1476,7 +1476,10 @@ def safe_replace(zipstream, name, datastream, extra_replacements={}, if isinstance(obj.filename, unicode): obj.flag_bits |= 0x16 # Set isUTF-8 bit if obj.filename in names: - ztemp.writestr(obj, replacements[obj.filename].read()) + r = replacements[obj.filename] + if not isinstance(r, bytes): + r = r.read() + ztemp.writestr(obj, r) found.add(obj.filename) else: ztemp.writestr(obj, z.read_raw(obj), raw_bytes=True)