소스 검색

[Core] Fix `AHashMap` constructors reserving too few elements

A Thousand Ships 6 달 전
부모
커밋
fad8134dca
1개의 변경된 파일6개의 추가작업 그리고 2개의 파일을 삭제
  1. 6 2
      core/templates/a_hash_map.h

+ 6 - 2
core/templates/a_hash_map.h

@@ -666,7 +666,9 @@ public:
 	}
 
 	AHashMap(const HashMap<TKey, TValue> &p_other) {
-		reserve(p_other.size());
+		if (p_other.size() > get_capacity()) {
+			reserve(p_other.size());
+		}
 		for (const KeyValue<TKey, TValue> &E : p_other) {
 			uint32_t hash = _hash(E.key);
 			_insert_element(E.key, E.value, hash);
@@ -704,7 +706,9 @@ public:
 	}
 
 	AHashMap(std::initializer_list<KeyValue<TKey, TValue>> p_init) {
-		reserve(p_init.size());
+		if (p_init.size() > get_capacity()) {
+			reserve(p_init.size());
+		}
 		for (const KeyValue<TKey, TValue> &E : p_init) {
 			insert(E.key, E.value);
 		}