diff options
author | Robin Gareus <robin@gareus.org> | 2017-05-14 11:59:15 +0200 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-05-14 12:00:19 +0200 |
commit | 3aa3413944c2af67fe90b77e49d650c8517c308e (patch) | |
tree | a820a4b32fcb4b767a1c3a88520ab288608d7b48 | |
parent | 3d26a29e8a2ed1286091fda2dd480bf5bbebe365 (diff) |
Fix use-after free (signal after deleting group)
-rw-r--r-- | gtk2_ardour/group_tabs.cc | 10 | ||||
-rw-r--r-- | gtk2_ardour/group_tabs.h | 2 |
2 files changed, 6 insertions, 6 deletions
diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc index 3adce69bf9..8f076fe84e 100644 --- a/gtk2_ardour/group_tabs.cc +++ b/gtk2_ardour/group_tabs.cc @@ -745,10 +745,10 @@ GroupTabs::set_activation (RouteGroup* g, bool a) void GroupTabs::remove_group (RouteGroup* g) { - RouteList rl (*(g->route_list().get())); + boost::shared_ptr<RouteList> rl (g->route_list ()); _session->remove_route_group (*g); - emit_gui_changed_for_members (g); + emit_gui_changed_for_members (rl); } /** Set the color of the tab of a route group */ @@ -822,7 +822,7 @@ GroupTabs::route_group_property_changed (RouteGroup* rg) for our routes. */ - emit_gui_changed_for_members (rg); + emit_gui_changed_for_members (rg->route_list ()); set_dirty (); } @@ -858,11 +858,11 @@ GroupTabs::route_removed_from_route_group (RouteGroup*, boost::weak_ptr<Route> w } void -GroupTabs::emit_gui_changed_for_members (RouteGroup* rg) +GroupTabs::emit_gui_changed_for_members (boost::shared_ptr<RouteList> rl) { PresentationInfo::ChangeSuspender cs; - for (RouteList::iterator i = rg->route_list()->begin(); i != rg->route_list()->end(); ++i) { + for (RouteList::iterator i = rl->begin(); i != rl->end(); ++i) { (*i)->presentation_info().PropertyChanged (Properties::color); } } diff --git a/gtk2_ardour/group_tabs.h b/gtk2_ardour/group_tabs.h index fc8f50b2bc..fa32f7cf8d 100644 --- a/gtk2_ardour/group_tabs.h +++ b/gtk2_ardour/group_tabs.h @@ -70,7 +70,7 @@ protected: }; private: - static void emit_gui_changed_for_members (ARDOUR::RouteGroup *); + static void emit_gui_changed_for_members (boost::shared_ptr<ARDOUR::RouteList>); /** Compute all the tabs for this widget. * @return Tabs. |