Mercurial > hg
diff hgext/convert/cvsps.py @ 51687:1eab9e40c0c8
convert: fix various leaked file descriptors
Some of these only leaked if an exception occurred between the open and close,
but a lot of these leaked unconditionally.
A type hint is added to `parsesplicemap` because otherwise this change caused
pytype to change the return type from this to `Dict[nothing, nothing]`.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Thu, 11 Jul 2024 21:54:02 -0400 |
parents | 1625fe807c04 |
children | 493034cc3265 |
line wrap: on
line diff
--- a/hgext/convert/cvsps.py Thu Jul 11 21:16:45 2024 -0400 +++ b/hgext/convert/cvsps.py Thu Jul 11 21:54:02 2024 -0400 @@ -161,7 +161,7 @@ # Use the Root file in the sandbox, if it exists try: - root = open(os.path.join(b'CVS', b'Root'), b'rb').read().strip() + root = util.readfile(os.path.join(b'CVS', b'Root')).strip() except IOError: pass @@ -195,16 +195,17 @@ if cache == b'update': try: ui.note(_(b'reading cvs log cache %s\n') % cachefile) - oldlog = pickle.load(open(cachefile, b'rb')) - for e in oldlog: - if not ( - hasattr(e, 'branchpoints') - and hasattr(e, 'commitid') - and hasattr(e, 'mergepoint') - ): - ui.status(_(b'ignoring old cache\n')) - oldlog = [] - break + with open(cachefile, b'rb') as fp: + oldlog = pickle.load(fp) + for e in oldlog: + if not ( + hasattr(e, 'branchpoints') + and hasattr(e, 'commitid') + and hasattr(e, 'mergepoint') + ): + ui.status(_(b'ignoring old cache\n')) + oldlog = [] + break ui.note(_(b'cache has %d log entries\n') % len(oldlog)) except Exception as e: @@ -526,7 +527,9 @@ # write the new cachefile ui.note(_(b'writing cvs log cache %s\n') % cachefile) - pickle.dump(log, open(cachefile, b'wb')) + + with open(cachefile, b'wb') as fp: + pickle.dump(log, fp) else: log = oldlog