From 046f43446e915c4d880ad3eb91db2e30ce345d07 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 15 Mar 2019 11:43:17 +0530 Subject: [PATCH] Replace use of pickle when repairing db on windows --- src/calibre/gui2/main.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index 5c397c09c8..c97f887f08 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -174,9 +174,10 @@ def repair_library(library_path): def windows_repair(library_path=None): from binascii import hexlify, unhexlify - import cPickle, subprocess + import subprocess + from calibre.utils.serialize import json_dumps, json_loads if library_path: - library_path = hexlify(cPickle.dumps(library_path, -1)) + library_path = hexlify(json_dumps(library_path)) winutil.prepare_for_restart() os.environ['CALIBRE_REPAIR_CORRUPTED_DB'] = library_path subprocess.Popen([sys.executable]) @@ -184,7 +185,7 @@ def windows_repair(library_path=None): try: app = Application([]) from calibre.gui2.dialogs.restore_library import repair_library_at - library_path = cPickle.loads(unhexlify(os.environ.pop('CALIBRE_REPAIR_CORRUPTED_DB'))) + library_path = json_loads(unhexlify(os.environ.pop('CALIBRE_REPAIR_CORRUPTED_DB'))) done = repair_library_at(library_path, wait_time=4) except Exception: done = False