--- statesaver.c 2006-02-04 18:56:12.000000000 +0000 +++ statesaver.c.orig 2007-07-23 04:31:01.000000000 +0000 @@ -44,7 +44,7 @@ Py_INCREF(g); /* exhausted -- can return 'g' itself */ return g; } - if (f->f_nfreevars || f->f_ncells) { + if (PySequence_Length(co->co_freevars) || PySequence_Length(co->co_cellvars)) { PyErr_SetString(PyExc_ValueError, "generator has cell or free vars"); return NULL; } @@ -67,6 +67,8 @@ PyFrameObject* f; PyFrameObject* f2; PyCodeObject* co; + PyCodeObject* code; + PyCodeObject* code2; int i, res; if (g != g2) @@ -94,8 +96,8 @@ PyErr_SetString(PyExc_TypeError, "returned gi_frame"); return -1; } - f2 = (PyFrameObject*) x; - if (f2->f_stacksize != f->f_stacksize) { + code2 = (PyFrameObject*) x; + if (code2->co_stacksize != code->co_stacksize) { PyErr_SetString(PyExc_TypeError, "stack size mismatch"); return -1; }