diff options
Diffstat (limited to 'core/templates')
-rw-r--r-- | core/templates/hash_map.h | 6 | ||||
-rw-r--r-- | core/templates/list.h | 16 | ||||
-rw-r--r-- | core/templates/ordered_hash_map.h | 6 | ||||
-rw-r--r-- | core/templates/vector.h | 2 |
4 files changed, 17 insertions, 13 deletions
diff --git a/core/templates/hash_map.h b/core/templates/hash_map.h index 1634219c23..45e0cc2427 100644 --- a/core/templates/hash_map.h +++ b/core/templates/hash_map.h @@ -53,7 +53,7 @@ * @param RELATIONSHIP Relationship at which the hash table is resized. if amount of elements is RELATIONSHIP * times bigger than the hash table, table is resized to solve this condition. if RELATIONSHIP is zero, table is always MIN_HASH_TABLE_POWER. * -*/ + */ template <class TKey, class TData, class Hasher = HashMapHasherDefault, class Comparator = HashMapComparatorDefault<TKey>, uint8_t MIN_HASH_TABLE_POWER = 3, uint8_t RELATIONSHIP = 8> class HashMap { @@ -458,8 +458,8 @@ public: * * print( *k ); * } - * - */ + * + */ const TKey *next(const TKey *p_key) const { if (unlikely(!hash_table)) { return nullptr; diff --git a/core/templates/list.h b/core/templates/list.h index c2e17a2f6f..afbed998c2 100644 --- a/core/templates/list.h +++ b/core/templates/list.h @@ -249,29 +249,29 @@ private: public: /** - * return a const iterator to the beginning of the list. - */ + * return a const iterator to the beginning of the list. + */ _FORCE_INLINE_ const Element *front() const { return _data ? _data->first : nullptr; } /** - * return an iterator to the beginning of the list. - */ + * return an iterator to the beginning of the list. + */ _FORCE_INLINE_ Element *front() { return _data ? _data->first : nullptr; } /** - * return a const iterator to the last member of the list. - */ + * return a const iterator to the last member of the list. + */ _FORCE_INLINE_ const Element *back() const { return _data ? _data->last : nullptr; } /** - * return an iterator to the last member of the list. - */ + * return an iterator to the last member of the list. + */ _FORCE_INLINE_ Element *back() { return _data ? _data->last : nullptr; } diff --git a/core/templates/ordered_hash_map.h b/core/templates/ordered_hash_map.h index 7a17eeb644..4996b88190 100644 --- a/core/templates/ordered_hash_map.h +++ b/core/templates/ordered_hash_map.h @@ -207,8 +207,12 @@ public: (*list_element)->get().second = p_value; return Element(*list_element); } - typename InternalList::Element *new_element = list.push_back(Pair<const K *, V>(nullptr, p_value)); + // Incorrectly set the first value of the pair with a value that will + // be invalid as soon as we leave this function... + typename InternalList::Element *new_element = list.push_back(Pair<const K *, V>(&p_key, p_value)); + // ...this is needed here in case the hashmap recursively reference itself... typename InternalMap::Element *e = map.set(p_key, new_element); + // ...now we can set the right value ! new_element->get().first = &e->key(); return Element(new_element); diff --git a/core/templates/vector.h b/core/templates/vector.h index 4b008a45a4..98982c80d3 100644 --- a/core/templates/vector.h +++ b/core/templates/vector.h @@ -35,7 +35,7 @@ * @class Vector * @author Juan Linietsky * Vector container. Regular Vector Container. Use with care and for smaller arrays when possible. Use Vector for large arrays. -*/ + */ #include "core/error/error_macros.h" #include "core/os/memory.h" |