diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-06-12 12:49:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-12 12:49:21 +0200 |
commit | 971b5160c61ccb7a009966d17d339997ea343da3 (patch) | |
tree | ff0d038213821bbf258f9fa9fd36288a7c7d9bbc /core | |
parent | f160c81f683d8a523f23d3c4f7a76151a75fe875 (diff) | |
parent | 8245db869f05a86e88338236d22765b87cc71db8 (diff) |
Merge pull request #29306 from qarmin/small_code_fixes
Small fixes to unrechable code, possibly overflows, using NULL pointers
Diffstat (limited to 'core')
-rw-r--r-- | core/hash_map.h | 19 | ||||
-rw-r--r-- | core/io/config_file.cpp | 4 | ||||
-rw-r--r-- | core/project_settings.cpp | 4 | ||||
-rw-r--r-- | core/ustring.cpp | 22 |
4 files changed, 14 insertions, 35 deletions
diff --git a/core/hash_map.h b/core/hash_map.h index 44459a3080..31332991de 100644 --- a/core/hash_map.h +++ b/core/hash_map.h @@ -162,20 +162,21 @@ private: new_hash_table[i] = 0; } - for (int i = 0; i < (1 << hash_table_power); i++) { + if (hash_table) { + for (int i = 0; i < (1 << hash_table_power); i++) { - while (hash_table[i]) { + while (hash_table[i]) { - Element *se = hash_table[i]; - hash_table[i] = se->next; - int new_pos = se->hash & ((1 << new_hash_table_power) - 1); - se->next = new_hash_table[new_pos]; - new_hash_table[new_pos] = se; + Element *se = hash_table[i]; + hash_table[i] = se->next; + int new_pos = se->hash & ((1 << new_hash_table_power) - 1); + se->next = new_hash_table[new_pos]; + new_hash_table[new_pos] = se; + } } - } - if (hash_table) memdelete_arr(hash_table); + } hash_table = new_hash_table; hash_table_power = new_hash_table_power; } diff --git a/core/io/config_file.cpp b/core/io/config_file.cpp index 414742deeb..871e21df3e 100644 --- a/core/io/config_file.cpp +++ b/core/io/config_file.cpp @@ -198,10 +198,6 @@ Error ConfigFile::load(const String &p_path) { section = next_tag.name; } } - - memdelete(f); - - return OK; } void ConfigFile::_bind_methods() { diff --git a/core/project_settings.cpp b/core/project_settings.cpp index 76fbd636d1..0508806a35 100644 --- a/core/project_settings.cpp +++ b/core/project_settings.cpp @@ -579,10 +579,6 @@ Error ProjectSettings::_load_settings_text(const String p_path) { section = next_tag.name; } } - - memdelete(f); - - return OK; } Error ProjectSettings::_load_settings_text_or_binary(const String p_text_path, const String p_bin_path) { diff --git a/core/ustring.cpp b/core/ustring.cpp index 88b758e883..741c825448 100644 --- a/core/ustring.cpp +++ b/core/ustring.cpp @@ -2956,26 +2956,12 @@ String String::replace(const char *p_key, const char *p_with) const { String String::replace_first(const String &p_key, const String &p_with) const { - String new_string; - int search_from = 0; - int result = 0; - - while ((result = find(p_key, search_from)) >= 0) { - - new_string += substr(search_from, result - search_from); - new_string += p_with; - search_from = result + p_key.length(); - break; + int pos = find(p_key); + if (pos >= 0) { + return substr(0, pos) + p_with + substr(pos + p_key.length(), length()); } - if (search_from == 0) { - - return *this; - } - - new_string += substr(search_from, length() - search_from); - - return new_string; + return *this; } String String::replacen(const String &p_key, const String &p_with) const { |