Hi all!

I added some debug output at the start and end of the Dialogs::show() method.
This is what I got before, with the testfile from the bugreport:

Dialogs::show(citation
Dialogs::show(citation
Dialogs::show(citation
Dialogs::show citation)
Dialogs::show citation)
Dialogs::show citation)
Dialogs::show(citation
CRASH

The attached patch just ignores subsequent calls to show if the old one isn't finished yet.
As long as we stay single-threaded the logic should be save.

Output after:

Dialogs::show(citation - 0
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show citation)
Dialogs::show(citation - 0
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show citation)
Dialogs::show(citation - 0
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show citation)
Dialogs::show(citation - 0
Dialogs::show citation)
Dialogs::show(citation - 0
Dialogs::show citation)
Dialogs::show(citation - 0
Dialogs::show(citation - 1
Dialogs::show citation)
Dialogs::show(citation - 0
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show(citation - 1
Dialogs::show citation)


... and no crash :-)

Cheers
/Andreas


Attachment: dialog-sync.diff
Description: Binary data

Reply via email to