summaryrefslogtreecommitdiffstats
path: root/pym/portage/util/__init__.py
diff options
context:
space:
mode:
authorZac Medico <zmedico@gentoo.org>2011-08-24 19:25:59 -0700
committerZac Medico <zmedico@gentoo.org>2011-08-24 19:25:59 -0700
commita12c63842b28e29f3bc6718e6d940d5b697f010f (patch)
treecb1e1f4a102a369591dc70355987e8c81e7c2f4d /pym/portage/util/__init__.py
parentf4d5667a09cb308f30bb7eb5ee14b9ef061c3604 (diff)
downloadportage-a12c63842b28e29f3bc6718e6d940d5b697f010f.tar.gz
portage-a12c63842b28e29f3bc6718e6d940d5b697f010f.tar.bz2
portage-a12c63842b28e29f3bc6718e6d940d5b697f010f.zip
python3.2 fixes: ResourceWarning: unclosed file
Diffstat (limited to 'pym/portage/util/__init__.py')
-rw-r--r--pym/portage/util/__init__.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/pym/portage/util/__init__.py b/pym/portage/util/__init__.py
index 4aa63d5e3..de3abdaa2 100644
--- a/pym/portage/util/__init__.py
+++ b/pym/portage/util/__init__.py
@@ -534,16 +534,18 @@ def getconfig(mycfg, tolerant=0, allow_sourcing=False, expand=True):
else:
expand_map = {}
mykeys = {}
+ f = None
try:
# NOTE: shlex doesn't support unicode objects with Python 2
# (produces spurious \0 characters).
if sys.hexversion < 0x3000000:
- content = open(_unicode_encode(mycfg,
- encoding=_encodings['fs'], errors='strict'), 'rb').read()
+ f = open(_unicode_encode(mycfg,
+ encoding=_encodings['fs'], errors='strict'), 'rb')
else:
- content = open(_unicode_encode(mycfg,
+ f = open(_unicode_encode(mycfg,
encoding=_encodings['fs'], errors='strict'), mode='r',
- encoding=_encodings['content'], errors='replace').read()
+ encoding=_encodings['content'], errors='replace')
+ content = f.read()
except IOError as e:
if e.errno == PermissionDenied.errno:
raise PermissionDenied(mycfg)
@@ -552,6 +554,9 @@ def getconfig(mycfg, tolerant=0, allow_sourcing=False, expand=True):
if e.errno not in (errno.EISDIR,):
raise
return None
+ finally:
+ if f is not None:
+ f.close()
# Workaround for avoiding a silent error in shlex that is
# triggered by a source statement at the end of the file