[capi-sig] Correct use of PyTuple_Pack?
Hrvoje Niksic
hniksic at xemacs.org
Thu Feb 12 23:14:47 CET 2009
Philip Semanchuk <philip at semanchuk.com> writes:
> I'm trying to make sure I'm using PyTuple_Pack() correctly.
>
> This code leaks references, yes?
>
> return PyTuple_Pack(2, PyString_FromString("some string"),
> PyInt_FromLong(42));
>
> And this is the correct way to do it, yes?
>
> py_msg = PyString_FromString("some string");
> py_type = PyInt_FromLong(42);
>
> py_return_tuple = PyTuple_Pack(2, py_msg, py_type);
>
> Py_DECREF(py_msg);
> Py_DECREF(py_type);
>
> return py_return_tuple;
Yes, and yes. Note that you can use Py_BuildValue to create a new
tuple and steal the new references:
return Py_BuildValue("NN", PyString_FromString("some string"),
PyInt_FromLong(42));
More information about the capi-sig
mailing list