summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Admiraal <madmiraal@users.noreply.github.com>2019-10-23 14:52:29 +0200
committerMarcel Admiraal <madmiraal@users.noreply.github.com>2019-10-24 08:18:34 +0200
commitce352ce5b4f0e4718ba3ecd1b12d59854b617182 (patch)
tree6f8ca86a9e15748b72021b576cc29e3d1e32b4ca
parent35944aebdeb4c3b5869aaeedaaded02397b7ce92 (diff)
Initialise VMap and HashMap values to the default when they are created.
Assigns a default value in VMap and HashMap when new keys are created using the array operator so they are the same as the other Map classes. The non const version of the array operator can be used for both assigning a value and retrieving a writeable version. In the Map template classes the assign version is being used to create new keys, but sometimes not assigning a value when retrieving a writeable version. This does not address the problem that the default value may not be the correct one, and it does not address the problem that new keys probably should not be created when the array operator is used. These problems will be addressed in a separate commit.
-rw-r--r--core/hash_map.h1
-rw-r--r--core/vmap.h3
2 files changed, 2 insertions, 2 deletions
diff --git a/core/hash_map.h b/core/hash_map.h
index 38da1d59ab..edc67e7806 100644
--- a/core/hash_map.h
+++ b/core/hash_map.h
@@ -210,6 +210,7 @@ private:
e->next = hash_table[index];
e->hash = hash;
e->pair.key = p_key;
+ e->pair.data = TData();
hash_table[index] = e;
elements++;
diff --git a/core/vmap.h b/core/vmap.h
index fde9723d71..ed66b46993 100644
--- a/core/vmap.h
+++ b/core/vmap.h
@@ -196,8 +196,7 @@ public:
int pos = _find_exact(p_key);
if (pos < 0) {
- V val;
- pos = insert(p_key, val);
+ pos = insert(p_key, V());
}
return _cowdata.get_m(pos).value;