From 3d400b7a58a9f6e338048593ae19ab3cc92a8cd3 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Thu, 14 Oct 2010 21:17:39 +0000 Subject: Merged revisions 85497 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r85497 | antoine.pitrou | 2010-10-14 23:15:17 +0200 (jeu., 14 oct. 2010) | 3 lines Explicitly close some files (from issue #10093) ........ --- Lib/base64.py | 3 ++- Lib/mimetypes.py | 7 +++---- Python/traceback.c | 6 ++++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/Lib/base64.py b/Lib/base64.py index b31c410..f93b3a4 100755 --- a/Lib/base64.py +++ b/Lib/base64.py @@ -383,7 +383,8 @@ def main(): if o == '-u': func = decode if o == '-t': test(); return if args and args[0] != '-': - func(open(args[0], 'rb'), sys.stdout.buffer) + with open(args[0], 'rb') as f: + func(f, sys.stdout.buffer) else: func(sys.stdin.buffer, sys.stdout.buffer) diff --git a/Lib/mimetypes.py b/Lib/mimetypes.py index f0da453..874037e 100644 --- a/Lib/mimetypes.py +++ b/Lib/mimetypes.py @@ -193,9 +193,8 @@ class MimeTypes: list of standard types, else to the list of non-standard types. """ - fp = open(filename) - self.readfp(fp, strict) - fp.close() + with open(filename) as fp: + self.readfp(fp, strict) def readfp(self, fp, strict=True): """ @@ -302,7 +301,7 @@ def init(files=None): files = knownfiles for file in files: if os.path.isfile(file): - db.readfp(open(file)) + db.read(file) encodings_map = db.encodings_map suffix_map = db.suffix_map types_map = db.types_map[True] diff --git a/Python/traceback.c b/Python/traceback.c index c101933..e74d442 100644 --- a/Python/traceback.c +++ b/Python/traceback.c @@ -209,6 +209,7 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) PyObject *binary; PyObject *fob = NULL; PyObject *lineobj = NULL; + PyObject *res; char buf[MAXPATHLEN+1]; Py_UNICODE *u, *p; Py_ssize_t len; @@ -254,6 +255,11 @@ _Py_DisplaySourceLine(PyObject *f, PyObject *filename, int lineno, int indent) break; } } + res = PyObject_CallMethod(fob, "close", ""); + if (res) + Py_DECREF(res); + else + PyErr_Clear(); Py_DECREF(fob); if (!lineobj || !PyUnicode_Check(lineobj)) { Py_XDECREF(lineobj); -- cgit v0.12