From 0012b7cd64949ee49335bad4891eaad4c4a21faf Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 9 Mar 2022 07:54:44 +0530 Subject: [PATCH] Delete temp file used for atomic writes even if renaming fails --- src/calibre/utils/config_base.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/calibre/utils/config_base.py b/src/calibre/utils/config_base.py index d80547aa5f..2b6aa64757 100644 --- a/src/calibre/utils/config_base.py +++ b/src/calibre/utils/config_base.py @@ -367,9 +367,13 @@ def commit_data(file_path, data): from calibre.utils.filenames import atomic_rename bdir = os.path.dirname(file_path) os.makedirs(bdir, exist_ok=True, mode=CONFIG_DIR_MODE) - with tempfile.NamedTemporaryFile(dir=bdir, delete=False) as f: - f.write(data) - atomic_rename(f.name, file_path) + try: + with tempfile.NamedTemporaryFile(dir=bdir, delete=False) as f: + f.write(data) + atomic_rename(f.name, file_path) + finally: + with suppress(FileNotFoundError, NameError): + os.remove(f.name) class Config(ConfigInterface):