summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorbulia byak <buliabyak@gmail.com>2008-09-20 21:02:26 +0000
committerbuliabyak <buliabyak@users.sourceforge.net>2008-09-20 21:02:26 +0000
commit8bed640644f89cefe0edca6eec1ebddbe28d61bf (patch)
tree59e8c013928db76040d11e874d13637571e24eb1 /src
parentDon't clip mask surface to mask bounding box. (diff)
downloadinkscape-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.cpp10
-rw-r--r--src/selection-describer.h3
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;
};