summaryrefslogtreecommitdiffstats
path: root/src/preferences.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/preferences.cpp')
-rw-r--r--src/preferences.cpp10
1 files changed, 1 insertions, 9 deletions
diff --git a/src/preferences.cpp b/src/preferences.cpp
index 2fe96dc22..8d0c8da73 100644
--- a/src/preferences.cpp
+++ b/src/preferences.cpp
@@ -105,10 +105,6 @@ Preferences::Preferences() :
Preferences::~Preferences()
{
- // delete all PrefNodeObservers
- for (_ObsMap::iterator i = _observer_map.begin(); i != _observer_map.end(); ) {
- delete (*i++).second; // avoids reference to a deleted key
- }
// unref XML document
Inkscape::GC::release(_prefs_doc);
}
@@ -302,9 +298,6 @@ void Preferences::reset()
if (retcode == 0) g_warning("%s", _("Preferences file was deleted."));
else g_warning("%s", _("There was an error trying to delete the preferences file."));
}
- for (_ObsMap::iterator i = _observer_map.begin(); i != _observer_map.end(); ) {
- delete (*i++).second; // avoids reference to a deleted key
- }
_observer_map.clear();
Inkscape::GC::release(_prefs_doc);
_prefs_doc = nullptr;
@@ -687,7 +680,7 @@ void Preferences::addObserver(Observer &o)
}
o._data = new _ObserverData(node, !attr_key.empty());
- _observer_map[&o] = new PrefNodeObserver(o, attr_key);
+ _observer_map[&o].reset(new PrefNodeObserver(o, attr_key));
// if we watch a single pref, we want to receive notifications only for a single node
if (o._data->_is_attr) {
@@ -715,7 +708,6 @@ void Preferences::removeObserver(Observer &o)
delete priv_data;
priv_data = nullptr;
- delete _observer_map[&o];
_observer_map.erase(&o);
}
}