summaryrefslogtreecommitdiffstats
path: root/src/widgets/arc-toolbar.cpp
diff options
context:
space:
mode:
authorMikko Rasa <tdb@tdb.fi>2018-04-12 17:01:12 +0000
committerMikko Rasa <tdb@tdb.fi>2018-04-12 17:01:12 +0000
commit7c83ae64c3b43faf7f2f07fe86396475b9d9f718 (patch)
treeff97fc88cd0c2000f9cafa06845b4b90d4cf0ca5 /src/widgets/arc-toolbar.cpp
parentMerge branch 'updategridwidgets' of gitlab.com:darktrojan/inkscape (diff)
downloadinkscape-7c83ae64c3b43faf7f2f07fe86396475b9d9f718.tar.gz
inkscape-7c83ae64c3b43faf7f2f07fe86396475b9d9f718.zip
Fix inconsistent signal disconnection in arc toolbar
Leaving the repr listener up while the selection signal was disconnected caused a crash when the attribute change callback was called with an old item pointer still stored in tbl.
Diffstat (limited to 'src/widgets/arc-toolbar.cpp')
-rw-r--r--src/widgets/arc-toolbar.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/widgets/arc-toolbar.cpp b/src/widgets/arc-toolbar.cpp
index d19b8672c..23ecad50a 100644
--- a/src/widgets/arc-toolbar.cpp
+++ b/src/widgets/arc-toolbar.cpp
@@ -596,8 +596,10 @@ static void arc_toolbox_check_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBa
changed = desktop->getSelection()->connectChanged(sigc::bind(sigc::ptr_fun(sp_arc_toolbox_selection_changed), holder));
sp_arc_toolbox_selection_changed(desktop->getSelection(), holder);
} else {
- if (changed)
+ if (changed) {
changed.disconnect();
+ purge_repr_listener(NULL, holder);
+ }
}
}