diff options
author | Ned Batchelder <ned@nedbatchelder.com> | 2013-09-28 11:52:11 -0400 |
---|---|---|
committer | Ned Batchelder <ned@nedbatchelder.com> | 2013-09-28 11:52:11 -0400 |
commit | e7514ced007f9905b4a825e00811eb31859d052f (patch) | |
tree | ec31f06d2c661e52e3c7d7bbd45253b82e15fea5 /coverage/execfile.py | |
parent | 1d179a1077819aec18b960a3fa24ea3490c884a5 (diff) | |
download | python-coveragepy-e7514ced007f9905b4a825e00811eb31859d052f.tar.gz |
Thanks, Windows, for reminding me to close my files!
Diffstat (limited to 'coverage/execfile.py')
-rw-r--r-- | coverage/execfile.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/coverage/execfile.py b/coverage/execfile.py index 2e89290..942d695 100644 --- a/coverage/execfile.py +++ b/coverage/execfile.py @@ -150,18 +150,22 @@ def make_code_from_pyc(filename): except IOError: raise NoCode("No file to run: %r" % filename) - # First four bytes are a version-specific magic number. It has to match - # or we won't run the file. - magic = fpyc.read(4) - if magic != imp.get_magic(): - raise NoCode("Bad magic number in .pyc file") - - # Skip the junk in the header that we don't need. - fpyc.read(4) # Skip the moddate. - if sys.version_info >= (3, 3): - # 3.3 added another long to the header (size), skip it. - fpyc.read(4) - - # The rest of the file is the code object we want. - code = marshal.load(fpyc) + try: + # First four bytes are a version-specific magic number. It has to match + # or we won't run the file. + magic = fpyc.read(4) + if magic != imp.get_magic(): + raise NoCode("Bad magic number in .pyc file") + + # Skip the junk in the header that we don't need. + fpyc.read(4) # Skip the moddate. + if sys.version_info >= (3, 3): + # 3.3 added another long to the header (size), skip it. + fpyc.read(4) + + # The rest of the file is the code object we want. + code = marshal.load(fpyc) + finally: + fpyc.close() + return code |