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:
parent
dac3d78244
commit
a8cfcd2cc2
3 changed files with 18 additions and 0 deletions
8
NEWS
8
NEWS
|
|
@ -30,6 +30,14 @@ New in spot 2.10.3.dev (not yet released)
|
||||||
alphabet, in applications where using atomic propositions is
|
alphabet, in applications where using atomic propositions is
|
||||||
inconvenient.
|
inconvenient.
|
||||||
|
|
||||||
|
Bugs fixed:
|
||||||
|
|
||||||
|
- Fix memory leaks in Python bindings for several iteration objects.
|
||||||
|
This occured while itering on twa_graph.out(), twa_graph.edges(),
|
||||||
|
twa_graph.univ_dests(), kripke_graph.out(), kripke_graph.edges(),
|
||||||
|
mark_t.sets(), scc_info.edges_of(), scc_info.inner_edges_of(), and
|
||||||
|
on an scc_info instance.
|
||||||
|
|
||||||
New in spot 2.10.3 (2022-01-15)
|
New in spot 2.10.3 (2022-01-15)
|
||||||
|
|
||||||
Bugs fixed:
|
Bugs fixed:
|
||||||
|
|
|
||||||
1
THANKS
1
THANKS
|
|
@ -57,5 +57,6 @@ Victor Khomenko
|
||||||
Vitus Lam
|
Vitus Lam
|
||||||
Yann Thierry-Mieg
|
Yann Thierry-Mieg
|
||||||
Yannick Molinghen
|
Yannick Molinghen
|
||||||
|
Yechuan Xia
|
||||||
Yong Li
|
Yong Li
|
||||||
Yuri Victorovich
|
Yuri Victorovich
|
||||||
|
|
|
||||||
|
|
@ -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>> {
|
%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)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator(self->begin(), self->begin(),
|
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>> {
|
%extend spot::internal::state_out<spot::digraph<spot::kripke_graph_state, void>> {
|
||||||
|
%newobject __iter__(PyObject **PYTHON_SELF);
|
||||||
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator(self->begin(), self->begin(),
|
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>> {
|
%extend spot::internal::all_trans<spot::digraph<spot::kripke_graph_state, void>> {
|
||||||
|
%newobject __iter__(PyObject **PYTHON_SELF);
|
||||||
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator(self->begin(), self->begin(),
|
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>> {
|
%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)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator(self->begin(), self->begin(),
|
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 {
|
%extend spot::internal::const_universal_dests {
|
||||||
|
%newobject __iter__(PyObject **PYTHON_SELF);
|
||||||
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator_np(self->begin(), self->begin(),
|
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 {
|
%extend spot::internal::mark_container {
|
||||||
|
%newobject __iter__(PyObject **PYTHON_SELF);
|
||||||
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator_np(self->begin(), self->begin(),
|
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> {
|
%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)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator(self->begin(), self->begin(),
|
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> {
|
%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)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator(self->begin(), self->begin(),
|
return swig::make_forward_iterator(self->begin(), self->begin(),
|
||||||
|
|
@ -1123,6 +1131,7 @@ static void* ptr_for_bdddict(PyObject* obj)
|
||||||
}
|
}
|
||||||
|
|
||||||
%extend spot::scc_info {
|
%extend spot::scc_info {
|
||||||
|
%newobject __iter__(PyObject **PYTHON_SELF);
|
||||||
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
swig::SwigPyIterator* __iter__(PyObject **PYTHON_SELF)
|
||||||
{
|
{
|
||||||
return swig::make_forward_iterator(self->begin(), self->begin(),
|
return swig::make_forward_iterator(self->begin(), self->begin(),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue