#17526: fix an IndexError raised while passing code without filename to inspect.findsource(). Initial patch by Tyler Doyle.

This commit is contained in:
Ezio Melotti 2013-03-30 05:17:24 +02:00
parent 9098472299
commit 1b145927d7
3 changed files with 18 additions and 1 deletions

View File

@ -550,7 +550,7 @@ def findsource(object):
file = getfile(object)
sourcefile = getsourcefile(object)
if not sourcefile and file[0] + file[-1] != '<>':
if not sourcefile and file[:1] + file[-1:] != '<>':
raise IOError('source code not available')
file = sourcefile if sourcefile else file

View File

@ -416,6 +416,12 @@ class TestBuggyCases(GetSourceBase):
finally:
del linecache.cache[co.co_filename]
def test_findsource_without_filename(self):
for fname in ['', '<string>']:
co = compile('x=1', fname, "exec")
self.assertRaises(IOError, inspect.findsource, co)
self.assertRaises(IOError, inspect.getsource, co)
class TestNoEOL(GetSourceBase):
def __init__(self, *args, **kwargs):
self.tempdir = TESTFN + '_dir'

View File

@ -5,8 +5,19 @@ Python News
What's New in Python 3.3.2?
===========================
*Release date: XXXX-XX-XX*
*Not yet released, see sections below for changes released in 3.3.0*
Core and Builtins
-----------------
Library
-------
- Issue #17526: fix an IndexError raised while passing code without filename to
inspect.findsource(). Initial patch by Tyler Doyle.
What's New in Python 3.3.1?
===========================