#define _StructParamObject_CAST(op) ((StructParamObject *)(op))
static int
-StructParam_traverse(PyObject *self, visitproc visit, void *arg)
+StructParam_traverse(PyObject *myself, visitproc visit, void *arg)
{
+ StructParamObject *self = _StructParamObject_CAST(myself);
Py_VISIT(Py_TYPE(self));
+ Py_VISIT(self->keep);
return 0;
}
}
StgInfo *sw_info;
if (PyStgInfo_FromType(st, swapped, &sw_info) < 0) {
+ Py_DECREF(swapped);
return -1;
}
assert(sw_info);
if (ob) {
StgInfo *info;
if (PyStgInfo_FromType(st, ob, &info) < 0) {
+ Py_DECREF(ob);
return -1;
}
if (ob != Py_None && !info && !PyCallable_Check(ob)) {
for (cur = start, i = 0; i < len; cur += step, i++) {
PyObject *v = Pointer_item(myself, cur);
+ if (!v) {
+ Py_DECREF(np);
+ return NULL;
+ }
PyList_SET_ITEM(np, i, v);
}
return np;
// They're cleared on error.
PyObject *layout_func = NULL;
PyObject *kwnames = NULL;
- PyObject* align = NULL;
- PyObject* size = NULL;
+ PyObject *align_obj = NULL;
+ PyObject *size_obj = NULL;
PyObject *layout_fields_obj = NULL;
PyObject *layout_fields = NULL;
PyObject *layout = NULL;
goto error;
}
- align = PyObject_GetAttr(layout, &_Py_ID(align));
- if (!align) {
+ align_obj = PyObject_GetAttr(layout, &_Py_ID(align));
+ if (!align_obj) {
goto error;
}
- Py_ssize_t total_align = PyLong_AsSsize_t(align);
- Py_CLEAR(align);
+ Py_ssize_t total_align = PyLong_AsSsize_t(align_obj);
+ Py_CLEAR(align_obj);
if (total_align < 0) {
if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ValueError,
goto error;
}
- size = PyObject_GetAttr(layout, &_Py_ID(size));
- if (!size) {
+ size_obj = PyObject_GetAttr(layout, &_Py_ID(size));
+ if (!size_obj) {
goto error;
}
- Py_ssize_t total_size = PyLong_AsSsize_t(size);
- Py_CLEAR(size);
+ Py_ssize_t total_size = PyLong_AsSsize_t(size_obj);
+ Py_CLEAR(size_obj);
if (total_size < 0) {
if (!PyErr_Occurred()) {
PyErr_SetString(PyExc_ValueError,
error:
Py_XDECREF(layout_func);
Py_XDECREF(kwnames);
- Py_XDECREF(align);
- Py_XDECREF(size);
+ Py_XDECREF(align_obj);
+ Py_XDECREF(size_obj);
Py_XDECREF(layout_fields_obj);
Py_XDECREF(layout_fields);
Py_XDECREF(layout);