From 051722d554c7cab6ae93509f4939a03169d03ac1 Mon Sep 17 00:00:00 2001 From: Serhiy Storchaka Date: Sat, 29 Dec 2012 22:30:56 +0200 Subject: Issue #16485: Fix file descriptor not being closed if file header patching fails on closing of aifc file. --- Lib/aifc.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'Lib/aifc.py') diff --git a/Lib/aifc.py b/Lib/aifc.py index 775f39c74f..841f5ae287 100644 --- a/Lib/aifc.py +++ b/Lib/aifc.py @@ -692,7 +692,9 @@ class Aifc_write: self._patchheader() def close(self): - if self._file: + if self._file is None: + return + try: self._ensure_header_written(0) if self._datawritten & 1: # quick pad to even size @@ -703,10 +705,12 @@ class Aifc_write: self._datalength != self._datawritten or \ self._marklength: self._patchheader() + finally: # Prevent ref cycles self._convert = None - self._file.close() + f = self._file self._file = None + f.close() # # Internal methods. -- cgit v1.2.1