diff options
Diffstat (limited to 'src/preferences.cpp')
| -rw-r--r-- | src/preferences.cpp | 10 |
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); } } |
