PyThreadState_Swap difference in 2.3.2?
mhammond at skippinet.com.au
Tue Dec 16 01:16:54 CET 2003
Paul Miller wrote:
>>The same thing stumped me too a couple of days ago (s.
>>with 2.3.3c1 (same applies 2.4a0 for that matter).
> Interesting. Unfortunately, there isn't a whole lot of information out
> there on what we're trying to do.
> I went ahead and commented out that check, but then I came across another
> problem. In object.c, it hit an assertion:
> assert(mro != NULL);
> This was for a custom Python type I had created in C. It was assuming this
> mro field was initialized, which it wasn't. It must be something new,
> because this all used to work in 2.2
> I will have to keep looking at the release notes.
> I wish there was a "upgrading from 2.2 to 2.3" document for people who are
> writing custom Python extensions, and doing embedding and such.
This assertion appears in PyObject_GenericGetAttr(). What was the
attribute being requested? I'm guessing your extension type is doing
something funky, as otherwise PyObject_GenericGetAttr() would not be called.
Almost all of my types upgraded without any pain. A few of the win32com
ones did require work to work with tp_iter, but that is only as these
types are themselves doing funky things.
I *think* that having tp_flags as zero works OK, but as soon as you use
Py_TPFLAGS_DEFAULT, you are expected to initialize your type
differently. Sorry, but I can recall any more details.
More information about the Python-list