[sigc] libsigc++ 3.0: How shall signal_impl::clear() be fixed?

2016-12-08 Thread Kjell Ahlstedt
signal_impl::clear() in libsigc++ 3.0 contains // Don't let signal_impl::notify() erase the slots. It would invalidate the // iterator in the following loop. const bool saved_deferred = deferred_; signal_impl_exec_holder(this); The last line is obviously wrong. It just creates a tempor

Re: [sigc] libsigc++ 3.0: How shall signal_impl::clear() be fixed?

2016-12-08 Thread Kjell Ahlstedt
This post replaces my previous post to libsigc-list. Den 2016-12-08 kl. 11:09, skrev Kjell Ahlstedt: signal_impl::clear() in libsigc++ 3.0 contains // Don't let signal_impl::notify() erase the slots. It would invalidate the // iterator in the following loop. const bool saved_deferred =

Re: [sigc] libsigc++ 3.0: How shall signal_impl::clear() be fixed?

2016-12-08 Thread Kjell Ahlstedt
My two previous posts were unnecessary. I've found why signal_impl_holder is not used in signal_impl::clear(). It makes several test cases fail. clear() is called from the destructor. shared_from_this() can't be used in the destructor. I have pushed a patch with signal_impl_exec_holder exec(