diff options
| author | bulia byak <buliabyak@gmail.com> | 2008-09-20 21:02:26 +0000 |
|---|---|---|
| committer | buliabyak <buliabyak@users.sourceforge.net> | 2008-09-20 21:02:26 +0000 |
| commit | 8bed640644f89cefe0edca6eec1ebddbe28d61bf (patch) | |
| tree | 59e8c013928db76040d11e874d13637571e24eb1 /src | |
| parent | Don't clip mask surface to mask bounding box. (diff) | |
| download | inkscape-8bed640644f89cefe0edca6eec1ebddbe28d61bf.tar.gz inkscape-8bed640644f89cefe0edca6eec1ebddbe28d61bf.zip | |
fix leak and potential crash by disconnecting on delete
(bzr r6854)
Diffstat (limited to 'src')
| -rw-r--r-- | src/selection-describer.cpp | 10 | ||||
| -rw-r--r-- | src/selection-describer.h | 3 |
2 files changed, 12 insertions, 1 deletions
diff --git a/src/selection-describer.cpp b/src/selection-describer.cpp index 6d80cfe5c..bd8403054 100644 --- a/src/selection-describer.cpp +++ b/src/selection-describer.cpp @@ -97,10 +97,18 @@ namespace Inkscape { SelectionDescriber::SelectionDescriber(Inkscape::Selection *selection, MessageStack *stack) : _context(stack) { - selection->connectChanged(sigc::mem_fun(*this, &SelectionDescriber::_updateMessageFromSelection)); + _selection_changed_connection = new sigc::connection ( + selection->connectChanged( + sigc::mem_fun(*this, &SelectionDescriber::_updateMessageFromSelection))); _updateMessageFromSelection(selection); } +SelectionDescriber::~SelectionDescriber() +{ + _selection_changed_connection->disconnect(); + delete _selection_changed_connection; +} + void SelectionDescriber::_updateMessageFromSelection(Inkscape::Selection *selection) { GSList const *items = selection->itemList(); diff --git a/src/selection-describer.h b/src/selection-describer.h index cd892bd14..91948c2fd 100644 --- a/src/selection-describer.h +++ b/src/selection-describer.h @@ -24,10 +24,13 @@ class MessageStack; class SelectionDescriber : public sigc::trackable { public: SelectionDescriber(Inkscape::Selection *selection, MessageStack *stack); + ~SelectionDescriber(); private: void _updateMessageFromSelection(Inkscape::Selection *selection); + sigc::connection *_selection_changed_connection; + MessageContext _context; }; |
