Mercurial > cpython-lru_cache-weakref
diff Python/bltinmodule.c @ 42071:825041fc8e2c
Rip out the file object's implementation.
Fixed test_import.py while I was at it.
However, there's still a problem in import.c -- get_file() can leak a
FILE struct (not a file descriptor though). I'm not sure how to fix
this; closing the FILE* closes the file descriptor, and that's the
wrong thing to do when there's still a Python file object keeping the
file descriptor open. I also would rather not mess with dup(), as it
won't port to Windows.
| author | Guido van Rossum <guido@python.org> |
|---|---|
| date | Tue, 12 Jun 2007 23:30:11 +0000 |
| parents | cd125fe83051 |
| children | 229c28cb9afb |
line wrap: on
line diff
--- a/Python/bltinmodule.c Tue Jun 12 18:07:38 2007 +0000 +++ b/Python/bltinmodule.c Tue Jun 12 23:30:11 2007 +0000 @@ -659,8 +659,7 @@ locals = globals; if (!PyString_Check(prog) && !PyUnicode_Check(prog) && - !PyCode_Check(prog) && - !PyFile_Check(prog)) { + !PyCode_Check(prog)) { PyErr_Format(PyExc_TypeError, "exec() arg 1 must be a string, file, or code " "object, not %.100s", prog->ob_type->tp_name); @@ -692,18 +691,6 @@ } v = PyEval_EvalCode((PyCodeObject *) prog, globals, locals); } - else if (PyFile_Check(prog)) { - FILE *fp = PyFile_AsFile(prog); - char *name = PyString_AsString(PyFile_Name(prog)); - PyCompilerFlags cf; - cf.cf_flags = 0; - if (PyEval_MergeCompilerFlags(&cf)) - v = PyRun_FileFlags(fp, name, Py_file_input, globals, - locals, &cf); - else - v = PyRun_File(fp, name, Py_file_input, globals, - locals); - } else { char *str = source_as_string(prog); PyCompilerFlags cf;
