Argh:
On 03.03.2011 11:11, Timo Reimann wrote:
What I can tell though is that the crash happens because too much dialog reference counter decrementing takes place. Although I have no clue why,
^^^^^^^^^^^^^^^^^
...the crash happens,
I believe the implementation of unref_dlg_unsafe() (a macro) could be somewhat more robust by not unlinking and destroying a dialog when the counter drops below zero. That is, instead of running the following block
if ((_dlg)->ref<=0) { \ unlink_unsafe_dlg( _d_entry, _dlg);\ LM_DBG("ref <=0 for dialog %p\n",_dlg);\ destroy_dlg(_dlg);\ }\
for _dlg->ref <= 0, I see no reason to change the compare operator to ==.
I see no reason *not* to change compare operator to ==. That is, I want the block to execute iff the reference counter is found to be zero.
--Timo