Kaydet (Commit) 1adbb507 authored tarafından Neal Norwitz's avatar Neal Norwitz

Move the initialization of some pointers earlier. The problem is

that if we call Py_DECREF(frame) like we do if allocating locals fails,
frame_dealloc() will try to use these bogus values and crash.
üst 48808a1d
...@@ -642,6 +642,7 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals, ...@@ -642,6 +642,7 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals,
f->f_trace = NULL; f->f_trace = NULL;
f->f_exc_type = f->f_exc_value = f->f_exc_traceback = NULL; f->f_exc_type = f->f_exc_value = f->f_exc_traceback = NULL;
} }
f->f_stacktop = f->f_valuestack;
f->f_builtins = builtins; f->f_builtins = builtins;
Py_XINCREF(back); Py_XINCREF(back);
f->f_back = back; f->f_back = back;
...@@ -672,7 +673,6 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals, ...@@ -672,7 +673,6 @@ PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals,
f->f_lineno = code->co_firstlineno; f->f_lineno = code->co_firstlineno;
f->f_iblock = 0; f->f_iblock = 0;
f->f_stacktop = f->f_valuestack;
_PyObject_GC_TRACK(f); _PyObject_GC_TRACK(f);
return f; return f;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment