2010/7/27 Krzysztof KosiĆski <tweenk.pl@...400...>:
It turns out that the author of the dialog was thinking correctly but did not know that some Inkscape APIs were braindead. The undo spam was triggered because the undo key passed to sp_document_maybe_done was dynamically created in a Glib::ustring, and that function expects a constant string. I fixed it to store a duplicate of the last undo action key in SPDocument (via g_strdup), rather than simply assigning a char pointer. The destructor was adjusted as well.
Why do you think that this is where this has to be fixed, instead of switching the filters dialog to static strings? Fill&stroke uses static strings just fine.
I don't see any necessity for dynamic generation of keys, and doing a string dup on each undo event sounds unnecessarily wasteful.
In any case, this is a nontrivial change in a very sensitive area, so I would prefer to err on the side of caution and not apply it to 0.48, given that the problem it fixes is relatively cosmetic.