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
dialog-sync.diff
Description: Binary data