From 7072a9a87491abb62f9b43fdabed8c00e2547fcb Mon Sep 17 00:00:00 2001 From: Lukas Tenbrink Date: Fri, 30 Jan 2026 18:58:42 +0100 Subject: [PATCH] Change `List` copy constructor from implicit to explicit. --- core/config/project_settings.h | 2 +- core/extension/gdextension.cpp | 2 +- core/io/ip.cpp | 4 ++-- core/os/os.cpp | 2 +- core/os/os.h | 4 ++-- core/templates/list.h | 5 +---- editor/docks/scene_tree_dock.cpp | 2 +- editor/editor_node.cpp | 2 +- editor/export/editor_export.cpp | 2 +- editor/file_system/dependency_editor.cpp | 2 +- editor/scene/canvas_item_editor_plugin.cpp | 4 ++-- editor/settings/editor_settings.cpp | 4 ++-- editor/settings/editor_settings_dialog.cpp | 4 ++-- editor/shader/shader_create_dialog.cpp | 2 +- modules/gdscript/gdscript_analyzer.cpp | 2 +- modules/multiplayer/multiplayer_synchronizer.cpp | 4 ++-- modules/multiplayer/scene_replication_interface.cpp | 6 +++--- platform/macos/os_macos.mm | 4 ++-- scene/gui/graph_edit.cpp | 2 +- scene/main/node.cpp | 2 +- 20 files changed, 29 insertions(+), 32 deletions(-) diff --git a/core/config/project_settings.h b/core/config/project_settings.h index a861f49f46..6b30ab0659 100644 --- a/core/config/project_settings.h +++ b/core/config/project_settings.h @@ -204,7 +204,7 @@ public: const HashMap &get_custom_property_info() const; uint64_t get_last_saved_time() { return last_save_time; } - List get_input_presets() const { return input_presets; } + List get_input_presets() const { return List(input_presets); } Variant get_setting_with_override(const StringName &p_name) const; Variant get_setting_with_override_and_custom_features(const StringName &p_name, const Vector &p_features) const; diff --git a/core/extension/gdextension.cpp b/core/extension/gdextension.cpp index 254095e915..61210127c6 100644 --- a/core/extension/gdextension.cpp +++ b/core/extension/gdextension.cpp @@ -950,7 +950,7 @@ void GDExtension::prepare_reload() { state.push_back(Pair(P.name, value)); } E.value.instance_state[obj_id] = { - state, // List> properties; + std::move(state), // List> properties; obj->is_extension_placeholder(), // bool is_placeholder; }; } diff --git a/core/io/ip.cpp b/core/io/ip.cpp index 94256a7b57..0436e30bfd 100644 --- a/core/io/ip.cpp +++ b/core/io/ip.cpp @@ -205,7 +205,7 @@ IPAddress IP::get_resolve_item_address(ResolverID p_id) const { return IPAddress(); } - List res = resolver->queue[p_id].response; + List res(resolver->queue[p_id].response); for (const IPAddress &E : res) { if (E.is_valid()) { @@ -224,7 +224,7 @@ Array IP::get_resolve_item_addresses(ResolverID p_id) const { return Array(); } - List res = resolver->queue[p_id].response; + List res(resolver->queue[p_id].response); Array result; for (const IPAddress &E : res) { diff --git a/core/os/os.cpp b/core/os/os.cpp index 1d6561a7df..6be1ecbd50 100644 --- a/core/os/os.cpp +++ b/core/os/os.cpp @@ -654,7 +654,7 @@ bool OS::is_restart_on_exit_set() const { } List OS::get_restart_on_exit_arguments() const { - return restart_commandline; + return List(restart_commandline); } PackedStringArray OS::get_connected_midi_inputs() { diff --git a/core/os/os.h b/core/os/os.h index d15844d790..c8efac5a03 100644 --- a/core/os/os.h +++ b/core/os/os.h @@ -235,8 +235,8 @@ public: virtual String get_distribution_name() const = 0; virtual String get_version() const = 0; virtual String get_version_alias() const { return get_version(); } - virtual List get_cmdline_args() const { return _cmdline; } - virtual List get_cmdline_user_args() const { return _user_args; } + virtual List get_cmdline_args() const { return List(_cmdline); } + virtual List get_cmdline_user_args() const { return List(_user_args); } virtual List get_cmdline_platform_args() const { return List(); } virtual String get_model_name() const; diff --git a/core/templates/list.h b/core/templates/list.h index c9ef135883..cc6f4b5929 100644 --- a/core/templates/list.h +++ b/core/templates/list.h @@ -685,10 +685,7 @@ public: return (void *)_data; } - /** - * copy constructor for the list - */ - List(const List &p_list) { + explicit List(const List &p_list) { const Element *it = p_list.front(); while (it) { push_back(it->get()); diff --git a/editor/docks/scene_tree_dock.cpp b/editor/docks/scene_tree_dock.cpp index 598efb926b..777c1cc666 100644 --- a/editor/docks/scene_tree_dock.cpp +++ b/editor/docks/scene_tree_dock.cpp @@ -4450,7 +4450,7 @@ List SceneTreeDock::paste_nodes(bool p_paste_as_sibling) { } List SceneTreeDock::get_node_clipboard() const { - return node_clipboard; + return List(node_clipboard); } void SceneTreeDock::add_remote_tree_editor(Tree *p_remote) { diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 54b3d6cc05..1170c4f515 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -1939,7 +1939,7 @@ int EditorNode::get_resource_count(Ref p_res) { List EditorNode::get_resource_node_list(Ref p_res) { List *L = resource_count.getptr(p_res); - return L == nullptr ? List() : *L; + return L == nullptr ? List() : List(*L); } void EditorNode::update_node_reference(const Variant &p_value, Node *p_node, bool p_remove) { diff --git a/editor/export/editor_export.cpp b/editor/export/editor_export.cpp index 2a5c388394..38b585342f 100644 --- a/editor/export/editor_export.cpp +++ b/editor/export/editor_export.cpp @@ -482,7 +482,7 @@ void EditorExport::update_export_presets() { export_presets_updated = true; bool update_value_overrides = false; - List options = platform_options[preset->get_platform()->get_name()]; + List options(platform_options[preset->get_platform()->get_name()]); // Clear the preset properties prior to reloading, keep the values to preserve options from plugins that may be currently disabled. preset->properties.clear(); diff --git a/editor/file_system/dependency_editor.cpp b/editor/file_system/dependency_editor.cpp index e0bcddd665..6a024e0795 100644 --- a/editor/file_system/dependency_editor.cpp +++ b/editor/file_system/dependency_editor.cpp @@ -239,7 +239,7 @@ List DependencyEditor::_filter_deps(const List &p_deps) { const String filter_text = filter->get_text(); if (filter_text.is_empty()) { - return p_deps; + return List(p_deps); } List filtered; diff --git a/editor/scene/canvas_item_editor_plugin.cpp b/editor/scene/canvas_item_editor_plugin.cpp index d1a11ba739..3f96554246 100644 --- a/editor/scene/canvas_item_editor_plugin.cpp +++ b/editor/scene/canvas_item_editor_plugin.cpp @@ -360,7 +360,7 @@ void CanvasItemEditor::_snap_other_nodes( } } for (int i = 0; i < p_current->get_child_count(); i++) { - _snap_other_nodes(p_value, p_transform_to_snap, r_current_snap, r_current_snap_target, p_snap_target, p_exceptions, p_current->get_child(i)); + _snap_other_nodes(p_value, p_transform_to_snap, r_current_snap, r_current_snap_target, p_snap_target, List(p_exceptions), p_current->get_child(i)); } } @@ -447,7 +447,7 @@ Point2 CanvasItemEditor::snap_point(Point2 p_target, unsigned int p_modes, unsig p_target, to_snap_transform, output, snap_target, SNAP_TARGET_OTHER_NODE, - exceptions, + List(exceptions), get_tree()->get_edited_scene_root()); } diff --git a/editor/settings/editor_settings.cpp b/editor/settings/editor_settings.cpp index 6eca0016df..5932ca68c7 100644 --- a/editor/settings/editor_settings.cpp +++ b/editor/settings/editor_settings.cpp @@ -203,7 +203,7 @@ bool EditorSettings::_get(const StringName &p_name, Variant &r_ret) const { continue; } - List> events = action_override.value; + List> events(action_override.value); Dictionary action_dict; action_dict["name"] = action_override.key; @@ -2208,7 +2208,7 @@ const Array EditorSettings::get_builtin_action_overrides(const String &p_name) c if (AO) { Array event_array; - List> events_list = AO->value; + List> events_list(AO->value); for (const Ref &E : events_list) { event_array.push_back(E); } diff --git a/editor/settings/editor_settings_dialog.cpp b/editor/settings/editor_settings_dialog.cpp index 054d12e4ac..181d4eddcf 100644 --- a/editor/settings/editor_settings_dialog.cpp +++ b/editor/settings/editor_settings_dialog.cpp @@ -350,7 +350,7 @@ bool EditorSettingsDialog::_is_in_project_manager() const { void EditorSettingsDialog::_update_builtin_action(const String &p_name, const Array &p_events) { Array old_input_array = EditorSettings::get_singleton()->get_builtin_action_overrides(p_name); if (old_input_array.is_empty()) { - List> defaults = InputMap::get_singleton()->get_builtins_with_feature_overrides_applied()[current_edited_identifier]; + List> defaults(InputMap::get_singleton()->get_builtins_with_feature_overrides_applied()[current_edited_identifier]); old_input_array = _event_list_to_array_helper(defaults); } @@ -730,7 +730,7 @@ void EditorSettingsDialog::_shortcut_button_pressed(Object *p_item, int p_column case EditorSettingsDialog::SHORTCUT_REVERT: { // Only for "shortcut" types if (is_editing_action) { - List> defaults = InputMap::get_singleton()->get_builtins_with_feature_overrides_applied()[current_edited_identifier]; + List> defaults(InputMap::get_singleton()->get_builtins_with_feature_overrides_applied()[current_edited_identifier]); Array events = _event_list_to_array_helper(defaults); _update_builtin_action(current_edited_identifier, events); diff --git a/editor/shader/shader_create_dialog.cpp b/editor/shader/shader_create_dialog.cpp index 113d8c5245..aff3c90658 100644 --- a/editor/shader/shader_create_dialog.cpp +++ b/editor/shader/shader_create_dialog.cpp @@ -265,7 +265,7 @@ void ShaderCreateDialog::_browse_path() { file_browse->set_customization_flag_enabled(FileDialog::CUSTOMIZATION_OVERWRITE_WARNING, false); file_browse->clear_filters(); - List extensions = type_data.get(type_menu->get_selected()).extensions; + List extensions(type_data.get(type_menu->get_selected()).extensions); for (const String &E : extensions) { file_browse->add_filter("*." + E); diff --git a/modules/gdscript/gdscript_analyzer.cpp b/modules/gdscript/gdscript_analyzer.cpp index 23182d0a9b..07612f6252 100644 --- a/modules/gdscript/gdscript_analyzer.cpp +++ b/modules/gdscript/gdscript_analyzer.cpp @@ -6531,7 +6531,7 @@ void GDScriptAnalyzer::resolve_pending_lambda_bodies() { GDScriptParser::LambdaNode *previous_lambda = current_lambda; bool previous_static_context = static_context; - List lambdas = pending_body_resolution_lambdas; + List lambdas = std::move(pending_body_resolution_lambdas); pending_body_resolution_lambdas.clear(); for (GDScriptParser::LambdaNode *lambda : lambdas) { diff --git a/modules/multiplayer/multiplayer_synchronizer.cpp b/modules/multiplayer/multiplayer_synchronizer.cpp index ced4719a73..0ea9185482 100644 --- a/modules/multiplayer/multiplayer_synchronizer.cpp +++ b/modules/multiplayer/multiplayer_synchronizer.cpp @@ -372,7 +372,7 @@ void MultiplayerSynchronizer::set_multiplayer_authority(int p_peer_id, bool p_re Error MultiplayerSynchronizer::_watch_changes(uint64_t p_usec) { ERR_FAIL_COND_V(replication_config.is_null(), FAILED); - const List props = replication_config->get_watch_properties(); + const List props(replication_config->get_watch_properties()); if (props.size() != watchers.size()) { watchers.resize(props.size()); } @@ -436,7 +436,7 @@ List MultiplayerSynchronizer::get_delta_state(uint64_t p_cur_usec, uint List MultiplayerSynchronizer::get_delta_properties(uint64_t p_indexes) { List out; ERR_FAIL_COND_V(replication_config.is_null(), out); - const List watch_props = replication_config->get_watch_properties(); + const List watch_props(replication_config->get_watch_properties()); int idx = 0; for (const NodePath &prop : watch_props) { if ((p_indexes & (1ULL << idx++)) == 0) { diff --git a/modules/multiplayer/scene_replication_interface.cpp b/modules/multiplayer/scene_replication_interface.cpp index 6517787ed1..74ee9b43ee 100644 --- a/modules/multiplayer/scene_replication_interface.cpp +++ b/modules/multiplayer/scene_replication_interface.cpp @@ -249,7 +249,7 @@ Error SceneReplicationInterface::on_replication_start(Object *p_obj, Variant p_c if (pending_buffer_size > 0) { ERR_FAIL_COND_V(!node || !sync->get_replication_config_ptr(), ERR_UNCONFIGURED); int consumed = 0; - const List props = sync->get_replication_config_ptr()->get_spawn_properties(); + const List props(sync->get_replication_config_ptr()->get_spawn_properties()); Vector vars; vars.resize(props.size()); Error err = MultiplayerAPI::decode_and_decompress_variants(vars, pending_buffer, pending_buffer_size, consumed); @@ -823,7 +823,7 @@ void SceneReplicationInterface::_send_sync(int p_peer, const HashSet & int size; Vector vars; Vector varp; - const List props = sync->get_replication_config_ptr()->get_sync_properties(); + const List props(sync->get_replication_config_ptr()->get_sync_properties()); Error err = MultiplayerSynchronizer::get_state(props, node, vars, varp); ERR_CONTINUE_MSG(err != OK, "Unable to retrieve sync state."); err = MultiplayerAPI::encode_and_compress_variants(varp.ptrw(), varp.size(), nullptr, size); @@ -882,7 +882,7 @@ Error SceneReplicationInterface::on_sync_receive(int p_from, const uint8_t *p_bu ofs += size; continue; } - const List props = sync->get_replication_config_ptr()->get_sync_properties(); + const List props(sync->get_replication_config_ptr()->get_sync_properties()); Vector vars; vars.resize(props.size()); int consumed; diff --git a/platform/macos/os_macos.mm b/platform/macos/os_macos.mm index cbdf0f194e..8bcc19a8af 100644 --- a/platform/macos/os_macos.mm +++ b/platform/macos/os_macos.mm @@ -274,7 +274,7 @@ void OS_MacOS::set_cmdline_platform_args(const List &p_args) { } List OS_MacOS::get_cmdline_platform_args() const { - return launch_service_args; + return List(launch_service_args); } void OS_MacOS::load_shell_environment() const { @@ -869,7 +869,7 @@ Error OS_MacOS::create_instance(const List &p_arguments, ProcessID *r_ch // Project started from the editor, inject "path" argument to set instance working directory. char cwd[PATH_MAX]; if (::getcwd(cwd, sizeof(cwd)) != nullptr) { - List arguments = p_arguments; + List arguments(p_arguments); arguments.push_back("--path"); arguments.push_back(String::utf8(cwd)); return create_process(path, arguments, r_child_id, false); diff --git a/scene/gui/graph_edit.cpp b/scene/gui/graph_edit.cpp index 279716f884..69ace1778f 100644 --- a/scene/gui/graph_edit.cpp +++ b/scene/gui/graph_edit.cpp @@ -2590,7 +2590,7 @@ TypedArray GraphEdit::_get_connections_intersecting_with_rect(const TypedArray GraphEdit::_get_connection_list_from_node(const StringName &p_node) const { ERR_FAIL_COND_V(!connection_map.has(p_node), TypedArray()); - List> connections_from_node = connection_map.get(p_node); + List> connections_from_node(connection_map.get(p_node)); TypedArray connections_from_node_dict; for (const Ref &conn : connections_from_node) { diff --git a/scene/main/node.cpp b/scene/main/node.cpp index 7218287e23..c16fe6f6d8 100644 --- a/scene/main/node.cpp +++ b/scene/main/node.cpp @@ -3211,7 +3211,7 @@ void Node::replace_by(RequiredParam rp_node, bool p_keep_groups) { EXTRACT_PARAM_OR_FAIL(p_node, rp_node); ERR_FAIL_COND(p_node->data.parent); - List owned = data.owned; + List owned(data.owned); List owned_by_owner; Node *owner = (data.owner == this) ? p_node : data.owner;