From 6ba70b06aadd036a61ba7068db5353d079a9fc26 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 4 Nov 2020 08:37:15 +0530 Subject: [PATCH] Fix printing of tracebacks broken when third party plugins with non-UTF-8 source code present --- src/calibre/customize/zipplugin.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/calibre/customize/zipplugin.py b/src/calibre/customize/zipplugin.py index df090ab90f..be48e85683 100644 --- a/src/calibre/customize/zipplugin.py +++ b/src/calibre/customize/zipplugin.py @@ -164,7 +164,11 @@ class CalibrePluginLoader: return src def get_source(self, fullname=None): - return self.get_source_as_bytes(fullname).decode('utf-8-sig').replace('\r\n', '\n') + raw = self.get_source_as_bytes(fullname) + try: + return raw.decode('utf-8-sig', 'replace').replace('\r\n', '\n') + except Exception: + return '' def get_filename(self, fullname): return self.filename