A documentação para PyList_New
diz que essas duas APIs são seguras antes que a lista seja totalmente inicializada: PyList_SetItem()
e PyList_SET_ITEM()
. Mas se um erro acontecer no meio da inicialização da lista, o que devo fazer?
PyObject* my_list = PyList_New(count);
if (!my_list) {
return PyErr_NoMemory();
}
for (int i = 0; i < count; i++) {
PyObject* element = _function_may_set_exc_and_return_null();
if (!element) {
// what to do here??
return NULL;
}
PyList_SET_ITEM(my_list, i, element);
}
return my_list;