Python/C API - PyArg_ParseTuple problem ?
mwh at python.net
Fri Aug 22 20:23:28 CEST 2003
"Poire Williams" <poire.williams at nomore.org> writes:
> Hi, everybody.
> I'm writing a Python binding for a C++ library and I just found something
> that puzzles me.
> If I do this:
> >> s = 'hi'
> >> t = NewType(0, 42, s)
> everything is well...
Even after a 'del s'?
> Moreover, if I change my C code to something like
> if (!PyArg_ParseTuple(args, "ii|O", &a, &b, &o)
> return NULL;
> s = PyString_AsString(o);
> everything's fine again, in both cases...
> I guess it's some kind of twisted reference count thing, and I'm still
> trying to get some minimal C code to reproduce this. Meanwhile, does
> anybody have a clue ?
> Thanks in advance.
> Precisions: I'm running Python 2.2.3 on Linux, and I don't free() the
> buffer retrieved via PyArg_ParseTuple or PyString_AsString :)
No, but I bet you're stuffing it into your data structure somewhere
along the line. I think you need to copy the string data.
In that case I suggest that to get the correct image you look at
the screen from inside the monitor whilst standing on your head.
-- James Bonfield, http://www.ioccc.org/2000/rince.hint
More information about the Python-list