Commit bfa3470b authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #10246: uu.encode didn't close file objects explicitly when filenames

were given to it.  Patch by Brian Brazil.
parent b046b807
......@@ -44,6 +44,8 @@ def encode(in_file, out_file, name=None, mode=None):
#
# If in_file is a pathname open it and change defaults
#
opened_files = []
try:
if in_file == '-':
in_file = sys.stdin.buffer
elif isinstance(in_file, str):
......@@ -55,6 +57,7 @@ def encode(in_file, out_file, name=None, mode=None):
except AttributeError:
pass
in_file = open(in_file, 'rb')
opened_files.append(in_file)
#
# Open out_file if it is a pathname
#
......@@ -62,6 +65,7 @@ def encode(in_file, out_file, name=None, mode=None):
out_file = sys.stdout.buffer
elif isinstance(out_file, str):
out_file = open(out_file, 'wb')
opened_files.append(out_file)
#
# Set defaults for name and mode
#
......@@ -78,6 +82,9 @@ def encode(in_file, out_file, name=None, mode=None):
out_file.write(binascii.b2a_uu(data))
data = in_file.read(45)
out_file.write(b' \nend\n')
finally:
for f in opened_files:
f.close()
def decode(in_file, out_file=None, mode=None, quiet=False):
......
......@@ -57,6 +57,9 @@ Core and Builtins
Library
-------
- Issue #10246: uu.encode didn't close file objects explicitly when filenames
were given to it. Patch by Brian Brazil.
- Issue #10198: fix duplicate header written to wave files when writeframes()
is called without data.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment