Fix some file resource leaks

I.e., files left open when the opening function exits. This is
a PyDebug warning.

svn: r21149
This commit is contained in:
John Ralls 2013-01-17 19:48:07 +00:00
parent 9a515bfde6
commit fc609ef3d5
2 changed files with 10 additions and 5 deletions

View File

@ -159,6 +159,7 @@ class CLIDbManager(object):
try: try:
dbmap1.open(fname, META, db.DB_HASH, db.DB_RDONLY) dbmap1.open(fname, META, db.DB_HASH, db.DB_RDONLY)
except: except:
env.close()
return "Unknown", "Unknown" return "Unknown", "Unknown"
version = dbmap1.get('version', default=None) version = dbmap1.get('version', default=None)
dbmap1.close() dbmap1.close()
@ -218,6 +219,7 @@ class CLIDbManager(object):
if os.path.isfile(path_name): if os.path.isfile(path_name):
file = open(path_name) file = open(path_name)
name = file.readline().strip() name = file.readline().strip()
file.close()
(tval, last) = time_val(dirpath) (tval, last) = time_val(dirpath)
(enable, stock_id) = self.icon_values(dirpath, self.active, (enable, stock_id) = self.icon_values(dirpath, self.active,

View File

@ -36,7 +36,7 @@ import os
import sys import sys
import re import re
import traceback import traceback
import codecs import io
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
# #
@ -1093,13 +1093,16 @@ class PluginRegister(object):
full_filename = os.path.join(dir, filename) full_filename = os.path.join(dir, filename)
if sys.version_info[0] < 3: if sys.version_info[0] < 3:
full_filename = full_filename.encode(glocale.getfilesystemencoding()) full_filename = full_filename.encode(glocale.getfilesystemencoding())
fd = open(full_filename, "r")
else:
fd = io.open(full_filename, 'r', encoding = 'utf-8')
stream = fd.read()
fd.close()
local_gettext = glocale.get_addon_translator(full_filename).gettext local_gettext = glocale.get_addon_translator(full_filename).gettext
try: try:
#execfile(full_filename, #execfile(full_filename,
exec(compile(codecs.open(full_filename, 'r', 'utf-8').read(), exec (compile(stream, full_filename, 'exec'),
full_filename, 'exec'), make_environment(_=local_gettext), {})
make_environment(_=local_gettext),
{})
except ValueError as msg: except ValueError as msg:
print(_('ERROR: Failed reading plugin registration %(filename)s') % \ print(_('ERROR: Failed reading plugin registration %(filename)s') % \
{'filename' : filename}) {'filename' : filename})