Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
02eb4b0b
Commit
02eb4b0b
authored
Feb 28, 2017
by
INADA Naoki
Committed by
GitHub
Feb 28, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bpo-29110: Fix file object leak in aifc.open (GH-356)
parent
c8e20218
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
30 additions
and
4 deletions
+30
-4
Lib/aifc.py
Lib/aifc.py
+14
-4
Lib/test/test_aifc.py
Lib/test/test_aifc.py
+12
-0
Misc/NEWS
Misc/NEWS
+4
-0
No files found.
Lib/aifc.py
View file @
02eb4b0b
...
...
@@ -288,6 +288,8 @@ class Aifc_read:
# _ssnd_chunk -- instantiation of a chunk class for the SSND chunk
# _framesize -- size of one frame in the file
_file
=
None
# Set here since __del__ checks it
def
initfp
(
self
,
file
):
self
.
_version
=
0
self
.
_decomp
=
None
...
...
@@ -341,10 +343,16 @@ class Aifc_read:
self
.
_decomp
.
SetParams
(
params
)
def
__init__
(
self
,
f
):
if
type
(
f
)
==
type
(
''
):
if
isinstance
(
f
,
basestring
):
f
=
__builtin__
.
open
(
f
,
'rb'
)
# else, assume it is an open file object already
self
.
initfp
(
f
)
try
:
self
.
initfp
(
f
)
except
:
f
.
close
()
raise
else
:
# assume it is an open file object already
self
.
initfp
(
f
)
#
# User visible methods.
...
...
@@ -562,8 +570,10 @@ class Aifc_write:
# _datalength -- the size of the audio samples written to the header
# _datawritten -- the size of the audio samples actually written
_file
=
None
# Set here since __del__ checks it
def
__init__
(
self
,
f
):
if
type
(
f
)
==
type
(
''
):
if
isinstance
(
f
,
basestring
):
filename
=
f
f
=
__builtin__
.
open
(
f
,
'wb'
)
else
:
...
...
Lib/test/test_aifc.py
View file @
02eb4b0b
...
...
@@ -129,6 +129,18 @@ class AifcMiscTest(audiotests.AudioTests, unittest.TestCase):
#This file contains chunk types aifc doesn't recognize.
self
.
f
=
aifc
.
open
(
findfile
(
'Sine-1000Hz-300ms.aif'
))
def
test_close_opened_files_on_error
(
self
):
non_aifc_file
=
findfile
(
'pluck-pcm8.wav'
,
subdir
=
'audiodata'
)
class
Aifc
(
aifc
.
Aifc_read
):
def
__init__
(
self
):
pass
a
=
Aifc
()
with
self
.
assertRaises
(
aifc
.
Error
):
aifc
.
Aifc_read
.
__init__
(
a
,
non_aifc_file
)
self
.
assertTrue
(
a
.
_file
.
closed
)
def
test_write_markers_values
(
self
):
fout
=
aifc
.
open
(
io
.
BytesIO
(),
'wb'
)
self
.
assertEqual
(
fout
.
getmarkers
(),
None
)
...
...
Misc/NEWS
View file @
02eb4b0b
...
...
@@ -36,6 +36,10 @@ Extension Modules
Library
-------
- bpo-29110: Fix file object leak in aifc.open() when file is given as a
filesystem path and is not in valid AIFF format.
Original patch by Anthony Zhang.
- Issue #29354: Fixed inspect.getargs() for parameters which are cell
variables.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment