On 10/03/2010 03:47 PM, Antoine Pitrou wrote:
You shouldn't call PyObject_FREE yourself, but instead rely on
Py_DECREF to deallocate it if the reference count drops to zero.
So, instead of commenting out Py_DECREF and keeping PyObject_FREE, I'd
recommend doing the reverse. That way, if a reference is still living
in the frame, the object doesn't get deallocated too early.

Humm. Now the behaviour is as follows:

with assignment to local variable
----------------------------------
* start_response = PyObject_NEW(...) -> start_response->ob_refcnt=1
* wsgiapp(environ, start_response)   ->                 ob_refcnt=2
* Py_DECREF(start_response)          ->                 ob_refcnt=1


without assignment
------------------
* start_response = PyObject_NEW(...) -> start_respinse->ob_refcnt=1
* wsgiapp(environ, start_response)   ->                 ob_refcnt=1
* Py_DECREF(start_response): CRASH

I think I'll compile Python with debug support to check out what's going wrong in the second case.

Jonas
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to