From 3d920db0b683451e0ff87dbb486a19be1ad28b38 Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:40:06 +0800 Subject: [PATCH 1/8] fix-RC --- src/_igraph/vertexseqobject.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/_igraph/vertexseqobject.c b/src/_igraph/vertexseqobject.c index 4e4f66e59..cb9ca3470 100644 --- a/src/_igraph/vertexseqobject.c +++ b/src/_igraph/vertexseqobject.c @@ -295,7 +295,6 @@ PyObject* igraphmodule_VertexSeq_get_attribute_values(igraphmodule_VertexSeqObje Py_INCREF(item); if (PyList_SetItem(result, i, item)) { - Py_DECREF(item); Py_DECREF(result); return 0; } @@ -320,7 +319,6 @@ PyObject* igraphmodule_VertexSeq_get_attribute_values(igraphmodule_VertexSeqObje Py_INCREF(item); if (PyList_SetItem(result, i, item)) { - Py_DECREF(item); Py_DECREF(result); return 0; } @@ -343,7 +341,6 @@ PyObject* igraphmodule_VertexSeq_get_attribute_values(igraphmodule_VertexSeqObje Py_INCREF(item); if (PyList_SetItem(result, i, item)) { - Py_DECREF(item); Py_DECREF(result); return 0; } @@ -469,7 +466,6 @@ int igraphmodule_VertexSeq_set_attribute_values_mapping(igraphmodule_VertexSeqOb if (item == 0) return -1; /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, i, item)) { - Py_DECREF(item); return -1; } /* PyList_SetItem stole a reference to the item automatically */ } @@ -487,7 +483,6 @@ int igraphmodule_VertexSeq_set_attribute_values_mapping(igraphmodule_VertexSeqOb } /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, i, item)) { - Py_DECREF(item); Py_DECREF(list); return -1; } @@ -530,7 +525,6 @@ int igraphmodule_VertexSeq_set_attribute_values_mapping(igraphmodule_VertexSeqOb } /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, VECTOR(vs)[i], item)) { - Py_DECREF(item); igraph_vector_int_destroy(&vs); return -1; } /* PyList_SetItem stole a reference to the item automatically */ @@ -549,7 +543,6 @@ int igraphmodule_VertexSeq_set_attribute_values_mapping(igraphmodule_VertexSeqOb for (i = 0; i < n2; i++) { Py_INCREF(Py_None); if (PyList_SetItem(list, i, Py_None)) { - Py_DECREF(Py_None); Py_DECREF(list); igraph_vector_int_destroy(&vs); return -1; @@ -566,7 +559,6 @@ int igraphmodule_VertexSeq_set_attribute_values_mapping(igraphmodule_VertexSeqOb } /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, VECTOR(vs)[i], item)) { - Py_DECREF(list); Py_DECREF(item); igraph_vector_int_destroy(&vs); return -1; From 9c5d6ba436bcc7e8de86a5bb9bc0282864e2182b Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:41:02 +0800 Subject: [PATCH 2/8] fix-RC and format --- src/_igraph/pyhelpers.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/_igraph/pyhelpers.c b/src/_igraph/pyhelpers.c index 6f0afaf4a..e3574466b 100644 --- a/src/_igraph/pyhelpers.c +++ b/src/_igraph/pyhelpers.c @@ -84,10 +84,9 @@ PyObject* igraphmodule_PyList_NewFill(Py_ssize_t len, PyObject* item) { for (i = 0; i < len; i++) { Py_INCREF(item); if (PyList_SetItem(result, i, item)) { - Py_DECREF(item); - Py_DECREF(result); - return 0; - } + Py_DECREF(result); + return 0; + } } return result; From a735f273c5dfdfbf4a46fe406f690908883e460e Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:43:12 +0800 Subject: [PATCH 3/8] fix-RC --- src/_igraph/attributes.c | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/src/_igraph/attributes.c b/src/_igraph/attributes.c index 1bc39a0eb..13ad9a896 100644 --- a/src/_igraph/attributes.c +++ b/src/_igraph/attributes.c @@ -282,7 +282,6 @@ PyObject* igraphmodule_i_create_edge_attribute(const igraph_t* graph, Py_INCREF(Py_None); if (PyList_SetItem(values, i, Py_None)) { /* reference stolen */ Py_DECREF(values); - Py_DECREF(Py_None); return 0; } } @@ -659,7 +658,6 @@ static igraph_error_t igraphmodule_i_attribute_add_vertices( if (o) { if (PyList_SetItem(value, i + j, o)) { - Py_DECREF(o); /* append failed */ o = NULL; /* indicate error */ } else { /* reference stolen by the list */ @@ -721,7 +719,6 @@ static igraph_error_t igraphmodule_i_attribute_permute_vertices(const igraph_t * Py_INCREF(o); if (PyList_SetItem(newlist, i, o)) { PyErr_PrintEx(0); - Py_DECREF(o); Py_DECREF(newlist); Py_DECREF(newdict); IGRAPH_ERROR("", IGRAPH_FAILURE); @@ -878,7 +875,6 @@ static igraph_error_t igraphmodule_i_attribute_add_edges( if (o) { if (PyList_SetItem(value, i + j, o)) { - Py_DECREF(o); /* append failed */ o = NULL; /* indicate error */ } else { /* reference stolen by the list */ @@ -935,7 +931,6 @@ static igraph_error_t igraphmodule_i_attribute_permute_edges(const igraph_t *gra Py_INCREF(o); if (PyList_SetItem(newlist, i, o)) { PyErr_PrintEx(0); - Py_DECREF(o); Py_DECREF(newlist); Py_DECREF(newdict); IGRAPH_ERROR("", IGRAPH_FAILURE); @@ -982,7 +977,6 @@ static PyObject* igraphmodule_i_ac_func(PyObject* values, Py_INCREF(item); if (PyList_SetItem(list, j, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(res); return 0; } @@ -1070,7 +1064,6 @@ static PyObject* igraphmodule_i_ac_sum(PyObject* values, item = PyFloat_FromDouble(sum); if (PyList_SetItem(res, i, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(res); return 0; } @@ -1114,7 +1107,6 @@ static PyObject* igraphmodule_i_ac_prod(PyObject* values, /* reference to new float stolen */ item = PyFloat_FromDouble((double)prod); if (PyList_SetItem(res, i, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(res); return 0; } @@ -1147,7 +1139,6 @@ static PyObject* igraphmodule_i_ac_first(PyObject* values, Py_INCREF(item); if (PyList_SetItem(res, i, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(res); return 0; } @@ -1207,7 +1198,6 @@ static PyObject* igraphmodule_i_ac_random(PyObject* values, Py_INCREF(item); if (PyList_SetItem(res, i, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(random_func); Py_DECREF(res); return 0; @@ -1244,7 +1234,6 @@ static PyObject* igraphmodule_i_ac_last(PyObject* values, Py_INCREF(item); if (PyList_SetItem(res, i, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(res); return 0; } @@ -1290,7 +1279,6 @@ static PyObject* igraphmodule_i_ac_mean(PyObject* values, /* reference to new float stolen */ item = PyFloat_FromDouble((double)mean); if (PyList_SetItem(res, i, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(res); return 0; } @@ -1324,7 +1312,6 @@ static PyObject* igraphmodule_i_ac_median(PyObject* values, Py_INCREF(item); if (PyList_SetItem(list, j, item)) { /* reference to item stolen */ - Py_DECREF(item); Py_DECREF(list); Py_DECREF(res); return 0; @@ -1383,7 +1370,6 @@ static PyObject* igraphmodule_i_ac_median(PyObject* values, /* reference to item stolen */ if (PyList_SetItem(res, i, item)) { - Py_DECREF(item); Py_DECREF(list); Py_DECREF(res); return 0; From 72cebe4a7ccc79494c51298b8b5c1745b0e277d8 Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:45:08 +0800 Subject: [PATCH 4/8] fix-RC --- src/_igraph/edgeobject.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/_igraph/edgeobject.c b/src/_igraph/edgeobject.c index 0f5e54171..1d36eebcf 100644 --- a/src/_igraph/edgeobject.c +++ b/src/_igraph/edgeobject.c @@ -393,7 +393,6 @@ int igraphmodule_Edge_set_attribute(igraphmodule_EdgeObject* self, PyObject* k, * It took me 1.5 hours between London and Manchester to figure it out */ Py_INCREF(v); r=PyList_SetItem(result, self->idx, v); - if (r == -1) { Py_DECREF(v); } return r; } @@ -406,7 +405,6 @@ int igraphmodule_Edge_set_attribute(igraphmodule_EdgeObject* self, PyObject* k, if (i != self->idx) { Py_INCREF(Py_None); if (PyList_SetItem(result, i, Py_None) == -1) { - Py_DECREF(Py_None); Py_DECREF(result); return -1; } @@ -414,7 +412,6 @@ int igraphmodule_Edge_set_attribute(igraphmodule_EdgeObject* self, PyObject* k, /* Same game with the reference count here */ Py_INCREF(v); if (PyList_SetItem(result, i, v) == -1) { - Py_DECREF(v); Py_DECREF(result); return -1; } From 455132b8a6ebd3cda27253de6288dc05ef34f8c2 Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:46:40 +0800 Subject: [PATCH 5/8] fix-RC --- src/_igraph/vertexobject.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/_igraph/vertexobject.c b/src/_igraph/vertexobject.c index 0c1ad31e9..45490c63b 100644 --- a/src/_igraph/vertexobject.c +++ b/src/_igraph/vertexobject.c @@ -524,7 +524,6 @@ int igraphmodule_Vertex_set_attribute(igraphmodule_VertexObject* self, PyObject* * It took me 1.5 hours between London and Manchester to figure it out */ Py_INCREF(v); r=PyList_SetItem(result, self->idx, v); - if (r == -1) { Py_DECREF(v); } return r; } @@ -537,7 +536,6 @@ int igraphmodule_Vertex_set_attribute(igraphmodule_VertexObject* self, PyObject* if (i != self->idx) { Py_INCREF(Py_None); if (PyList_SetItem(result, i, Py_None) == -1) { - Py_DECREF(Py_None); Py_DECREF(result); return -1; } @@ -545,7 +543,6 @@ int igraphmodule_Vertex_set_attribute(igraphmodule_VertexObject* self, PyObject* /* Same game with the reference count here */ Py_INCREF(v); if (PyList_SetItem(result, i, v) == -1) { - Py_DECREF(v); Py_DECREF(result); return -1; } @@ -639,7 +636,6 @@ static PyObject* _convert_to_edge_list(igraphmodule_VertexObject* vertex, PyObje } if (PyList_SetItem(obj, i, edge)) { /* reference to v stolen, reference to idx discarded */ - Py_DECREF(edge); return NULL; } } @@ -684,7 +680,6 @@ static PyObject* _convert_to_vertex_list(igraphmodule_VertexObject* vertex, PyOb } if (PyList_SetItem(obj, i, v)) { /* reference to v stolen, reference to idx discarded */ - Py_DECREF(v); return NULL; } } From a7b06cd598b97a7c632ad07a6fee1120a85c50c7 Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:47:32 +0800 Subject: [PATCH 6/8] fix-RC --- src/_igraph/indexing.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/_igraph/indexing.c b/src/_igraph/indexing.c index 8da3f600e..a6e288d34 100644 --- a/src/_igraph/indexing.c +++ b/src/_igraph/indexing.c @@ -340,7 +340,6 @@ static int igraphmodule_i_Graph_adjmatrix_set_index_row(igraph_t* graph, /* Setting attribute */ Py_INCREF(item); if (PyList_SetItem(values, eid, item)) { - Py_DECREF(item); igraph_vector_int_clear(&data->to_add); } } @@ -402,7 +401,6 @@ static int igraphmodule_i_Graph_adjmatrix_set_index_row(igraph_t* graph, /* Setting attribute */ Py_INCREF(new_value); if (PyList_SetItem(values, eid, new_value)) { - Py_DECREF(new_value); igraph_vector_int_clear(&data->to_add); } } From ed9161da0b990a84f4f9c25ec938c292462f3a47 Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:49:23 +0800 Subject: [PATCH 7/8] fix-RC --- src/_igraph/edgeseqobject.c | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/_igraph/edgeseqobject.c b/src/_igraph/edgeseqobject.c index 13f4364f9..fddc61d51 100644 --- a/src/_igraph/edgeseqobject.c +++ b/src/_igraph/edgeseqobject.c @@ -310,7 +310,6 @@ PyObject* igraphmodule_EdgeSeq_get_attribute_values(igraphmodule_EdgeSeqObject* Py_INCREF(item); if (PyList_SetItem(result, i, item)) { - Py_DECREF(item); Py_DECREF(result); return 0; } @@ -335,7 +334,6 @@ PyObject* igraphmodule_EdgeSeq_get_attribute_values(igraphmodule_EdgeSeqObject* Py_INCREF(item); if (PyList_SetItem(result, i, item)) { - Py_DECREF(item); Py_DECREF(result); return 0; } @@ -359,7 +357,6 @@ PyObject* igraphmodule_EdgeSeq_get_attribute_values(igraphmodule_EdgeSeqObject* Py_INCREF(item); if (PyList_SetItem(result, i, item)) { - Py_DECREF(item); Py_DECREF(result); return 0; } @@ -495,7 +492,6 @@ int igraphmodule_EdgeSeq_set_attribute_values_mapping(igraphmodule_EdgeSeqObject } /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, i, item)) { - Py_DECREF(item); return -1; } /* PyList_SetItem stole a reference to the item automatically */ } @@ -516,7 +512,6 @@ int igraphmodule_EdgeSeq_set_attribute_values_mapping(igraphmodule_EdgeSeqObject } /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, i, item)) { - Py_DECREF(item); Py_DECREF(list); return -1; } @@ -560,7 +555,6 @@ int igraphmodule_EdgeSeq_set_attribute_values_mapping(igraphmodule_EdgeSeqObject } /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, VECTOR(es)[i], item)) { - Py_DECREF(item); igraph_vector_int_destroy(&es); return -1; } /* PyList_SetItem stole a reference to the item automatically */ @@ -579,7 +573,6 @@ int igraphmodule_EdgeSeq_set_attribute_values_mapping(igraphmodule_EdgeSeqObject for (i = 0; i < n2; i++) { Py_INCREF(Py_None); if (PyList_SetItem(list, i, Py_None)) { - Py_DECREF(Py_None); Py_DECREF(list); return -1; } @@ -596,7 +589,6 @@ int igraphmodule_EdgeSeq_set_attribute_values_mapping(igraphmodule_EdgeSeqObject } /* No need to Py_INCREF(item), PySequence_GetItem returns a new reference */ if (PyList_SetItem(list, VECTOR(es)[i], item)) { - Py_DECREF(item); Py_DECREF(list); return -1; } From b91c9cea7fd7446b371d36946ac7096b04cb195f Mon Sep 17 00:00:00 2001 From: Wang Rui <55612496+wr-web@users.noreply.github.com> Date: Sun, 10 May 2026 18:50:59 +0800 Subject: [PATCH 8/8] fix-RC --- src/_igraph/operators.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/_igraph/operators.c b/src/_igraph/operators.c index 9949e77f5..19199633a 100644 --- a/src/_igraph/operators.c +++ b/src/_igraph/operators.c @@ -156,7 +156,6 @@ PyObject *igraphmodule__union(PyObject *self, if (!dest || PyList_SetItem(emi, j, dest)) { igraph_vector_ptr_destroy(&gs); igraph_vector_int_list_destroy(&edgemaps); - Py_XDECREF(dest); Py_DECREF(emi); Py_DECREF(em_list); return NULL; @@ -167,7 +166,6 @@ PyObject *igraphmodule__union(PyObject *self, if (!emi || PyList_SetItem(em_list, i, emi)) { igraph_vector_ptr_destroy(&gs); igraph_vector_int_list_destroy(&edgemaps); - Py_XDECREF(emi); Py_DECREF(em_list); return NULL; } @@ -281,7 +279,6 @@ PyObject *igraphmodule__intersection(PyObject *self, if (!dest || PyList_SetItem(emi, j, dest)) { igraph_vector_ptr_destroy(&gs); igraph_vector_int_list_destroy(&edgemaps); - Py_XDECREF(dest); Py_DECREF(emi); Py_DECREF(em_list); return NULL; @@ -292,7 +289,6 @@ PyObject *igraphmodule__intersection(PyObject *self, if (!emi || PyList_SetItem(em_list, i, emi)) { igraph_vector_ptr_destroy(&gs); igraph_vector_int_list_destroy(&edgemaps); - Py_XDECREF(emi); Py_DECREF(em_list); return NULL; }