summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas Holder <thomas@thomas-holder.de>2019-01-13 19:47:02 +0000
committerThomas Holder <thomas@thomas-holder.de>2019-01-14 16:31:24 +0000
commit092331283cf9408eabb54b614d263309b373f68f (patch)
treeb1e1012b7e379d5d02480ad59286a54c7579c6c3 /src
parentAdd correct tooltips for Cap height and x-height. (diff)
downloadinkscape-092331283cf9408eabb54b614d263309b373f68f.tar.gz
inkscape-092331283cf9408eabb54b614d263309b373f68f.zip
std::unique_ptr<PrefNodeObserver>
Diffstat (limited to 'src')
-rw-r--r--src/preferences.cpp10
-rw-r--r--src/preferences.h3
2 files changed, 3 insertions, 10 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);
}
}
diff --git a/src/preferences.h b/src/preferences.h
index 0b3f8ff16..8a548d4cd 100644
--- a/src/preferences.h
+++ b/src/preferences.h
@@ -18,6 +18,7 @@
#include <cfloat>
#include <glibmm/ustring.h>
#include <map>
+#include <memory>
#include <unordered_map>
#include <utility>
#include <vector>
@@ -603,7 +604,7 @@ private:
/// Wrapper class for XML node observers
class PrefNodeObserver;
- typedef std::map<Observer *, PrefNodeObserver *> _ObsMap;
+ typedef std::map<Observer *, std::unique_ptr<PrefNodeObserver>> _ObsMap;
/// Map that keeps track of wrappers assigned to PrefObservers
_ObsMap _observer_map;