mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
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.
This commit is contained in:
parent
2d5c219fe0
commit
da5b8f2d28
14 changed files with 106 additions and 2537 deletions
|
@ -659,8 +659,7 @@ builtin_exec(PyObject *self, PyObject *args)
|
|||
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 @@ builtin_exec(PyObject *self, PyObject *args)
|
|||
}
|
||||
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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue