python: fix a memory leak in all added __iter__ methods

Reported by Yechuan Xia

* python/spot/impl.i: Add %newobject to all __iter__ methods.
* NEWS: Mention the list of affected methods.
* THANKS: Update.
This commit is contained in:
Alexandre Duret-Lutz 2022-01-31 10:08:47 +01:00
parent dac3d78244
commit a8cfcd2cc2
3 changed files with 18 additions and 0 deletions

View file

@ -1022,6 +1022,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::state_out<spot::digraph<spot::twa_graph_state, spot::twa_graph_edge_data>> {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator(self->begin(), self->begin(),
@ -1030,6 +1031,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::state_out<spot::digraph<spot::kripke_graph_state, void>> {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator(self->begin(), self->begin(),
@ -1055,6 +1057,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::all_trans<spot::digraph<spot::kripke_graph_state, void>> {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator(self->begin(), self->begin(),
@ -1063,6 +1066,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::all_trans<spot::digraph<spot::twa_graph_state, spot::twa_graph_edge_data>> {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator(self->begin(), self->begin(),
@ -1071,6 +1075,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::const_universal_dests {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator_np(self->begin(), self->begin(),
@ -1079,6 +1084,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::mark_container {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator_np(self->begin(), self->begin(),
@ -1087,6 +1093,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::scc_edges<spot::digraph<spot::twa_graph_state, spot::twa_graph_edge_data> const, spot::internal::keep_all> {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator(self->begin(), self->begin(),
@ -1095,6 +1102,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::internal::scc_edges<spot::digraph<spot::twa_graph_state, spot::twa_graph_edge_data> const, spot::internal::keep_inner_scc> {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator(self->begin(), self->begin(),
@ -1123,6 +1131,7 @@ static void* ptr_for_bdddict(PyObject* obj)
}
%extend spot::scc_info {
%newobject __iter__(PyObject **PYTHON_SELF);
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
{
return swig::make_forward_iterator(self->begin(), self->begin(),