Bug in Python/C API?

Rainer Deyke root at rainerdeyke.com
Mon Sep 11 14:33:28 EDT 2000


"Alex" <cut_me_out at hotmail.com> wrote in message
news:etd8zsysssw.fsf at oliver.mit.edu...
>
> >>>>> "Rainer" == Rainer Deyke <root at rainerdeyke.com> writes:
>
>     Rainer> I noticed something very strange: when I use
>     Rainer> PyObject_CallMethod to call a method on a class instance,
>     Rainer> the method gets called twice.  I am using Python version
>     Rainer> 1.5.2.
>
> Could you post some code that does this?

Actually, I think I found the problem.  I was doing this:

Py_XDECREF(PyObject_CallMethod(...));

This of course executes the PyObject_CallMethod(...) twice if it did not
return 0 the first time.

I really should know better by now.

This sort of problem could be prevented if Py_XDECREF was defined like this:

#define Py_XDECREF(A) if (tmp = (A)) Py_DECREF(A)

where tmp is a global PyObject *.


--
Rainer Deyke (root at rainerdeyke.com)
Shareware computer games           -           http://rainerdeyke.com
"In ihren Reihen zu stehen heisst unter Feinden zu kaempfen" - Abigor





More information about the Python-list mailing list