From 88edeb42ad5b53279aced704f4c5a974882d575e Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Tue, 13 Sep 2016 11:29:30 +0200 Subject: [PATCH] Don't clear the user-defined function list until after the DB is actually closed. This order prevents problems in plugins that run just before closing the db, e.g., library closed plugins. It is possible that a better fix is to move the two lines of code into db.cache.close(). I looked for unwanted side effects and didn't see any, but I didnt want to make the more invasive change. --- src/calibre/gui2/ui.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index 1335846de3..68e1d58a66 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -634,9 +634,6 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ olddb = self.library_view.model().db if copy_structure: default_prefs = olddb.prefs - - from calibre.utils.formatter_functions import unload_user_template_functions - unload_user_template_functions(olddb.library_id) except: olddb = None try: @@ -688,6 +685,8 @@ class Main(MainWindow, MainWindowMixin, DeviceMixin, EmailMixin, # {{{ try: if call_close: olddb.close() + from calibre.utils.formatter_functions import unload_user_template_functions + unload_user_template_functions(olddb.library_id) except: import traceback traceback.print_exc()