[Python-checkins] CVS: python/dist/src/Python ceval.c,2.165,2.166
Greg Stein
gstein@lyra.org
Wed, 12 Jan 2000 15:00:16 -0800 (PST)
For the PyRun_File case, you've introduced a Py_DECREF() that wasn't there
before. Was that intended?
Also note that PyString_AS_STRING() and PyString_GETSIZE could be used
since the object must be a string.
Cheers,
-g
On Wed, 12 Jan 2000, Guido van Rossum wrote:
>...
> *** ceval.c 1999/11/15 19:29:33 2.165
> --- ceval.c 2000/01/12 22:45:54 2.166
> ***************
> *** 2741,2745 ****
> PyObject *locals;
> {
> - char *s;
> int n;
> PyObject *v;
> --- 2741,2744 ----
> ***************
> *** 2778,2808 ****
> PyDict_SetItemString(globals, "__builtins__", f->f_builtins);
> if (PyCode_Check(prog)) {
> ! v = PyEval_EvalCode((PyCodeObject *) prog,
> ! globals, locals);
> ! if (v == NULL)
> ! return -1;
> ! Py_DECREF(v);
> ! return 0;
> }
> ! if (PyFile_Check(prog)) {
> FILE *fp = PyFile_AsFile(prog);
> char *name = PyString_AsString(PyFile_Name(prog));
> ! if (PyRun_File(fp, name, Py_file_input,
> ! globals, locals) == NULL)
> ! return -1;
> ! return 0;
> }
> ! s = PyString_AsString(prog);
> ! if ((int)strlen(s) != PyString_Size(prog)) {
> ! PyErr_SetString(PyExc_ValueError,
> ! "embedded '\\0' in exec string");
> ! return -1;
> }
> ! v = PyRun_String(s, Py_file_input, globals, locals);
> if (v == NULL)
> return -1;
> Py_DECREF(v);
> - if (plain)
> - PyFrame_LocalsToFast(f, 0);
> return 0;
> }
> --- 2777,2801 ----
> PyDict_SetItemString(globals, "__builtins__", f->f_builtins);
> if (PyCode_Check(prog)) {
> ! v = PyEval_EvalCode((PyCodeObject *) prog, globals, locals);
> }
> ! else if (PyFile_Check(prog)) {
> FILE *fp = PyFile_AsFile(prog);
> char *name = PyString_AsString(PyFile_Name(prog));
> ! v = PyRun_File(fp, name, Py_file_input, globals, locals);
> }
> ! else {
> ! char *s = PyString_AsString(prog);
> ! if ((int)strlen(s) != PyString_Size(prog)) {
> ! PyErr_SetString(PyExc_ValueError,
> ! "embedded '\\0' in exec string");
> ! return -1;
> ! }
> ! v = PyRun_String(s, Py_file_input, globals, locals);
> }
> ! if (plain)
> ! PyFrame_LocalsToFast(f, 0);
> if (v == NULL)
> return -1;
> Py_DECREF(v);
> return 0;
> }
--
Greg Stein, http://www.lyra.org/