[capi-sig] Correct use of PyTuple_Pack?
Philip Semanchuk
philip at semanchuk.com
Fri Feb 13 03:12:10 CET 2009
On Feb 12, 2009, at 5:14 PM, Hrvoje Niksic wrote:
> 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));
I much prefer your version. Thanks.
More information about the capi-sig
mailing list