ronantakizawa/codereview-bench huggingface dataset:
Repository: godotengine/godot
File: editor/editor_help.cpp (C++)

Code before:
			tag_stack.push_front("font");

		} else {
			p_rt->add_text("["); //ignore
			pos = brk_pos + 1;
		}
	}
}

void EditorHelp::_add_text(const String &p_bbcode) {
	_add_text_to_rt(p_bbcode, class_desc);
}

void EditorHelp::generate_doc() {
	doc = memnew(DocTools);
	doc->generate(true);
	DocTools compdoc;
	compdoc.load_compressed(_doc_data_compressed, _doc_data_compressed_size, _doc_data_uncompressed_size);
	doc->merge_from(compdoc); //ensure all is up to date
}

void EditorHelp::_notification(int p_what) {
	switch (p_what) {
		case NOTIFICATION_READY:
		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
			_update_doc();
		} break;
		case NOTIFICATION_THEME_CHANGED: {
			if (is_inside_tree()) {
				_class_desc_resized();
			}
		} break;
		default:
			break;
	}
}

void EditorHelp::go_to_help(const String &p_help) {
	_help_callback(p_help);
}

void EditorHelp::go_to_class(const String &p_class, int p_scroll) {
	_goto_desc(p_class, p_scroll);
}

void EditorHelp::update_doc() {
	ERR_FAIL_COND(!doc->class_list.has(edited_class));
	ERR_FAIL_COND(!doc->class_list[edited_class].is_script_doc);
	_update_doc();
}


Review comment (suggestion):
Can be a little less repetitive:
```suggestion
		toggle_scripts_button->set_icon(get_theme_icon(ScriptEditor::get_singleton()->toggle_scripts_panel() ? SNAME("Forward") : SNAME("Back"), SNAME("EditorIcons")));
	} else {
		toggle_scripts_button->set_icon(get_theme_icon(ScriptEditor::get_singleton()->toggle_scripts_panel() ? SNAME("Back") : SNAME("Forward"), SNAME("EditorIcons")));
```
(same for the other similar parts)

Code after:
			tag_stack.push_front("font");

		} else {
			p_rt->add_text("["); //ignore
			pos = brk_pos + 1;
		}
	}
}

void EditorHelp::_add_text(const String &p_bbcode) {
	_add_text_to_rt(p_bbcode, class_desc);
}

void EditorHelp::generate_doc() {
	doc = memnew(DocTools);
	doc->generate(true);
	DocTools compdoc;
	compdoc.load_compressed(_doc_data_compressed, _doc_data_compressed_size, _doc_data_uncompressed_size);
	doc->merge_from(compdoc); //ensure all is up to date
}

void EditorHelp::_toggle_scripts_pressed() {
	ScriptEditor::get_singleton()->toggle_scripts_panel();
	update_toggle_scripts_button();
}

void EditorHelp::_notification(int p_what) {
	switch (p_what) {
		case NOTIFICATION_READY:
		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
			_update_doc();
		} break;
		case NOTIFICATION_THEME_CHANGED: {
			if (is_inside_tree()) {
				_class_desc_resized();
			}
			update_toggle_scripts_button();
		} break;
		case NOTIFICATION_VISIBILITY_CHANGED:
			update_toggle_scripts_button();
			break;
		default:
			break;
	}
}

void EditorHelp::go_to_help(const String &p_help) {
	_help_callback(p_help);
}

void EditorHelp::go_to_class(const String &p_class, int p_scroll) {
Repository: godotengine/godot
File: editor/editor_help.cpp (C++)

Code before:
			tag_stack.push_front("font");

		} else {
			p_rt->add_text("["); //ignore
			pos = brk_pos + 1;
		}
	}
}

void EditorHelp::_add_text(const String &p_bbcode) {
	_add_text_to_rt(p_bbcode, class_desc);
}

void EditorHelp::generate_doc() {
	doc = memnew(DocTools);
	doc->generate(true);
	DocTools compdoc;
	compdoc.load_compressed(_doc_data_compressed, _doc_data_compressed_size, _doc_data_uncompressed_size);
	doc->merge_from(compdoc); //ensure all is up to date
}

void EditorHelp::_notification(int p_what) {
	switch (p_what) {
		case NOTIFICATION_READY:
		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
			_update_doc();
		} break;
		case NOTIFICATION_THEME_CHANGED: {
			if (is_inside_tree()) {
				_class_desc_resized();
			}
		} break;
		default:
			break;
	}
}

void EditorHelp::go_to_help(const String &p_help) {
	_help_callback(p_help);
}

void EditorHelp::go_to_class(const String &p_class, int p_scroll) {
	_goto_desc(p_class, p_scroll);
}

void EditorHelp::update_doc() {
	ERR_FAIL_COND(!doc->class_list.has(edited_class));
	ERR_FAIL_COND(!doc->class_list[edited_class].is_script_doc);
	_update_doc();
}


Review comment (suggestion):
Rather then duplicating this code, can we do something like this? Should be the same in visual scripts.
```suggestion
void EditorHelp::_toggle_scripts_pressed() {
	ScriptEditor::get_singleton()->toggle_scripts_panel();
	update_toggle_scripts_button();
}
```

Otherwise looks good.

Code after:
			tag_stack.push_front("font");

		} else {
			p_rt->add_text("["); //ignore
			pos = brk_pos + 1;
		}
	}
}

void EditorHelp::_add_text(const String &p_bbcode) {
	_add_text_to_rt(p_bbcode, class_desc);
}

void EditorHelp::generate_doc() {
	doc = memnew(DocTools);
	doc->generate(true);
	DocTools compdoc;
	compdoc.load_compressed(_doc_data_compressed, _doc_data_compressed_size, _doc_data_uncompressed_size);
	doc->merge_from(compdoc); //ensure all is up to date
}

void EditorHelp::_toggle_scripts_pressed() {
	ScriptEditor::get_singleton()->toggle_scripts_panel();
	update_toggle_scripts_button();
}

void EditorHelp::_notification(int p_what) {
	switch (p_what) {
		case NOTIFICATION_READY:
		case EditorSettings::NOTIFICATION_EDITOR_SETTINGS_CHANGED: {
			_update_doc();
		} break;
		case NOTIFICATION_THEME_CHANGED: {
			if (is_inside_tree()) {
				_class_desc_resized();
			}
			update_toggle_scripts_button();
		} break;
		case NOTIFICATION_VISIBILITY_CHANGED:
			update_toggle_scripts_button();
			break;
		default:
			break;
	}
}

void EditorHelp::go_to_help(const String &p_help) {
	_help_callback(p_help);
}

void EditorHelp::go_to_class(const String &p_class, int p_scroll) {
Repository: godotengine/godot
File: editor/plugins/script_editor_plugin.cpp (C++)

Code before:
		case REPLACE_IN_FILES: {
			_on_replace_in_files_requested("");
		} break;
		case SEARCH_HELP: {
			help_search_dialog->popup_dialog();
		} break;
		case SEARCH_WEBSITE: {
			OS::get_singleton()->shell_open("https://docs.godotengine.org/");
		} break;
		case WINDOW_NEXT: {
			_history_forward();
		} break;
		case WINDOW_PREV: {
			_history_back();
		} break;
		case WINDOW_SORT: {
			_sort_list_on_update = true;
			_update_script_names();
		} break;
		case TOGGLE_SCRIPTS_PANEL: {
			if (current) {
				ScriptTextEditor *editor = Object::cast_to<ScriptTextEditor>(current);
				toggle_scripts_panel();
				if (editor) {
					editor->update_toggle_scripts_button();
				}
			} else {
				toggle_scripts_panel();
			}
		}
	}

	if (current) {
		switch (p_option) {
			case FILE_SAVE: {
				save_current_script();
			} break;
			case FILE_SAVE_AS: {
				if (trim_trailing_whitespace_on_save) {
					current->trim_trailing_whitespace();
				}

				current->insert_final_newline();

				if (convert_indent_on_save) {
					if (use_space_indentation) {
						current->convert_indent_to_spaces();
					} else {
						current->convert_indent_to_tabs();
					}
				}

Review comment (suggestion):
This one might work in this specific case but in general not all children of `TabContainer` are treated as tabs (only non top-level Controls are considered tabs) and thus it's not guaranteed that tab index matches index in parent. To obtain tab control by tab index `TabContainer::get_tab_control(int tab_index)` should be used. Or specifically for the current tab:
```suggestion
				Node *tab = tab_container->get_current_tab_control();
```

Code after:
		} break;
		case REPLACE_IN_FILES: {
			_on_replace_in_files_requested("");
		} break;
		case SEARCH_HELP: {
			help_search_dialog->popup_dialog();
		} break;
		case SEARCH_WEBSITE: {
			OS::get_singleton()->shell_open("https://docs.godotengine.org/");
		} break;
		case WINDOW_NEXT: {
			_history_forward();
		} break;
		case WINDOW_PREV: {
			_history_back();
		} break;
		case WINDOW_SORT: {
			_sort_list_on_update = true;
			_update_script_names();
		} break;
		case TOGGLE_SCRIPTS_PANEL: {
			toggle_scripts_panel();
			if (current) {
				current->update_toggle_scripts_button();
			} else {
				Control *tab = tab_container->get_current_tab_control();
				EditorHelp *editor_help = Object::cast_to<EditorHelp>(tab);
				if (editor_help) {
					editor_help->update_toggle_scripts_button();
				}
			}
		}
	}

	if (current) {
		switch (p_option) {
			case FILE_SAVE: {
				save_current_script();
			} break;
			case FILE_SAVE_AS: {
				if (trim_trailing_whitespace_on_save) {
					current->trim_trailing_whitespace();
				}

				current->insert_final_newline();

				if (convert_indent_on_save) {
					if (use_space_indentation) {
						current->convert_indent_to_spaces();
					} else {
						current->convert_indent_to_tabs();
Repository: godotengine/godot
File: editor/plugins/script_editor_plugin.cpp (C++)

Code before:
		case REPLACE_IN_FILES: {
			_on_replace_in_files_requested("");
		} break;
		case SEARCH_HELP: {
			help_search_dialog->popup_dialog();
		} break;
		case SEARCH_WEBSITE: {
			OS::get_singleton()->shell_open("https://docs.godotengine.org/");
		} break;
		case WINDOW_NEXT: {
			_history_forward();
		} break;
		case WINDOW_PREV: {
			_history_back();
		} break;
		case WINDOW_SORT: {
			_sort_list_on_update = true;
			_update_script_names();
		} break;
		case TOGGLE_SCRIPTS_PANEL: {
			if (current) {
				ScriptTextEditor *editor = Object::cast_to<ScriptTextEditor>(current);
				toggle_scripts_panel();
				if (editor) {
					editor->update_toggle_scripts_button();
				}
			} else {
				toggle_scripts_panel();
			}
		}
	}

	if (current) {
		switch (p_option) {
			case FILE_SAVE: {
				save_current_script();
			} break;
			case FILE_SAVE_AS: {
				if (trim_trailing_whitespace_on_save) {
					current->trim_trailing_whitespace();
				}

				current->insert_final_newline();

				if (convert_indent_on_save) {
					if (use_space_indentation) {
						current->convert_indent_to_spaces();
					} else {
						current->convert_indent_to_tabs();
					}
				}

Review comment (suggestion):
Shouldn't really matter but it returns a `Control *` (didn't notice that previously):
```suggestion
				Control *tab = tab_container->get_current_tab_control();
```

Code after:
		} break;
		case REPLACE_IN_FILES: {
			_on_replace_in_files_requested("");
		} break;
		case SEARCH_HELP: {
			help_search_dialog->popup_dialog();
		} break;
		case SEARCH_WEBSITE: {
			OS::get_singleton()->shell_open("https://docs.godotengine.org/");
		} break;
		case WINDOW_NEXT: {
			_history_forward();
		} break;
		case WINDOW_PREV: {
			_history_back();
		} break;
		case WINDOW_SORT: {
			_sort_list_on_update = true;
			_update_script_names();
		} break;
		case TOGGLE_SCRIPTS_PANEL: {
			toggle_scripts_panel();
			if (current) {
				current->update_toggle_scripts_button();
			} else {
				Control *tab = tab_container->get_current_tab_control();
				EditorHelp *editor_help = Object::cast_to<EditorHelp>(tab);
				if (editor_help) {
					editor_help->update_toggle_scripts_button();
				}
			}
		}
	}

	if (current) {
		switch (p_option) {
			case FILE_SAVE: {
				save_current_script();
			} break;
			case FILE_SAVE_AS: {
				if (trim_trailing_whitespace_on_save) {
					current->trim_trailing_whitespace();
				}

				current->insert_final_newline();

				if (convert_indent_on_save) {
					if (use_space_indentation) {
						current->convert_indent_to_spaces();
					} else {
						current->convert_indent_to_tabs();
Repository: godotengine/godot
File: scene/2d/gpu_particles_2d.cpp (C++)

Code before:
	RS::get_singleton()->particles_set_draw_passes(particles, 1);
	RS::get_singleton()->particles_set_draw_pass_mesh(particles, 0, mesh);

	one_shot = false; // Needed so that set_emitting doesn't access uninitialized values
	set_emitting(true);
	set_one_shot(false);
	set_amount(8);
	set_lifetime(1);
	set_fixed_fps(0);
	set_fractional_delta(true);
	set_pre_process_time(0);
	set_explosiveness_ratio(0);
	set_randomness_ratio(0);
	set_visibility_rect(Rect2(Vector2(-100, -100), Vector2(200, 200)));
	set_use_local_coordinates(true);
	set_draw_order(DRAW_ORDER_LIFETIME);
	set_speed_scale(1);
	set_fixed_fps(30);
	set_collision_base_size(collision_base_size);
}

GPUParticles2D::~GPUParticles2D() {
	RS::get_singleton()->free(particles);
	RS::get_singleton()->free(mesh);
}


Review comment (suggestion):
`show_visibility_rect = false` would be enough. Other properties are set via methods, because they do something with RenderingServer.

Code after:
}

GPUParticles2D::GPUParticles2D() {
	particles = RS::get_singleton()->particles_create();
	RS::get_singleton()->particles_set_mode(particles, RS::PARTICLES_MODE_2D);

	mesh = RS::get_singleton()->mesh_create();
	RS::get_singleton()->particles_set_draw_passes(particles, 1);
	RS::get_singleton()->particles_set_draw_pass_mesh(particles, 0, mesh);

	one_shot = false; // Needed so that set_emitting doesn't access uninitialized values
	set_emitting(true);
	set_one_shot(false);
	set_amount(8);
	set_lifetime(1);
	set_fixed_fps(0);
	set_fractional_delta(true);
	set_pre_process_time(0);
	set_explosiveness_ratio(0);
	set_randomness_ratio(0);
	set_visibility_rect(Rect2(Vector2(-100, -100), Vector2(200, 200)));
	set_use_local_coordinates(true);
	set_draw_order(DRAW_ORDER_LIFETIME);
	set_speed_scale(1);
	set_fixed_fps(30);
	set_collision_base_size(collision_base_size);
#ifdef TOOLS_ENABLED
	show_visibility_rect = false;
#endif
}

GPUParticles2D::~GPUParticles2D() {
	RS::get_singleton()->free(particles);
	RS::get_singleton()->free(mesh);
}
Repository: godotengine/godot
File: scene/main/window.cpp (C++)

Code before:
void Window::set_position(const Point2i &p_position) {
	position = p_position;

	if (embedder) {
		embedder->_sub_window_update(this);

	} else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		DisplayServer::get_singleton()->window_set_position(p_position, window_id);
	}
}

Point2i Window::get_position() const {
	return position;
}

void Window::set_size(const Size2i &p_size) {
	size = p_size;
	_update_window_size();
}

Size2i Window::get_size() const {
	return size;
}

Size2i Window::get_real_size() const {
	if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		return DisplayServer::get_singleton()->window_get_real_size(window_id);
	}
	return size;
}

void Window::set_max_size(const Size2i &p_max_size) {
	max_size = p_max_size;
	if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		DisplayServer::get_singleton()->window_set_max_size(max_size, window_id);
	}
	_update_window_size();
}

Size2i Window::get_max_size() const {
	if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		max_size = DisplayServer::get_singleton()->window_get_max_size(window_id);
	}
	return max_size;
}

void Window::set_min_size(const Size2i &p_min_size) {
	min_size = p_min_size;
	if (!wrap_controls && window_id != DisplayServer::INVALID_WINDOW_ID) {
		DisplayServer::get_singleton()->window_set_min_size(min_size, window_id);
	}

Review comment (suggestion):
I'd suggest using `Size2i()`, it should be equivalent and negative sizes are a bit weirder to reason about (even if the result is the same as it will be directly overridden).

Code after:
void Window::set_position(const Point2i &p_position) {
	position = p_position;

	if (embedder) {
		embedder->_sub_window_update(this);

	} else if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		DisplayServer::get_singleton()->window_set_position(p_position, window_id);
	}
}

Point2i Window::get_position() const {
	return position;
}

void Window::set_size(const Size2i &p_size) {
	size = p_size;
	_update_window_size();
}

Size2i Window::get_size() const {
	return size;
}

void Window::reset_size() {
	set_size(Size2i());
}

Size2i Window::get_real_size() const {
	if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		return DisplayServer::get_singleton()->window_get_real_size(window_id);
	}
	return size;
}

void Window::set_max_size(const Size2i &p_max_size) {
	max_size = p_max_size;
	if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		DisplayServer::get_singleton()->window_set_max_size(max_size, window_id);
	}
	_update_window_size();
}

Size2i Window::get_max_size() const {
	if (window_id != DisplayServer::INVALID_WINDOW_ID) {
		max_size = DisplayServer::get_singleton()->window_get_max_size(window_id);
	}
	return max_size;
}

void Window::set_min_size(const Size2i &p_min_size) {
Repository: godotengine/godot
File: scene/3d/vehicle_body_3d.h (C/C++)

Code before:
	void set_suspension_travel(real_t p_length);
	real_t get_suspension_travel() const;

	void set_suspension_stiffness(real_t p_value);
	real_t get_suspension_stiffness() const;

	void set_suspension_max_force(real_t p_value);
	real_t get_suspension_max_force() const;

	void set_damping_compression(real_t p_value);
	real_t get_damping_compression() const;

	void set_damping_relaxation(real_t p_value);
	real_t get_damping_relaxation() const;

	void set_friction_slip(real_t p_value);
	real_t get_friction_slip() const;

	void set_use_as_traction(bool p_enable);
	bool is_used_as_traction() const;

	void set_use_as_steering(bool p_enabled);
	bool is_used_as_steering() const;

	bool is_in_contact() const;

	void set_roll_influence(real_t p_value);
	real_t get_roll_influence() const;

	real_t get_skidinfo() const;

	real_t get_rpm() const;

	void set_engine_force(real_t p_engine_force);
	real_t get_engine_force() const;

	void set_brake(real_t p_brake);
	real_t get_brake() const;

	void set_steering(real_t p_steering);
	real_t get_steering() const;

	TypedArray<String> get_configuration_warnings() const override;

	VehicleWheel3D();
};

class VehicleBody3D : public RigidDynamicBody3D {
	GDCLASS(VehicleBody3D, RigidDynamicBody3D);

	real_t engine_force = 0.0;

Review comment (suggestion):
Coding style needs to be fixed, and this method could be const:
```suggestion
	Node3D *get_contact_body() const;
```

Code after:
	void set_suspension_travel(real_t p_length);
	real_t get_suspension_travel() const;

	void set_suspension_stiffness(real_t p_value);
	real_t get_suspension_stiffness() const;

	void set_suspension_max_force(real_t p_value);
	real_t get_suspension_max_force() const;

	void set_damping_compression(real_t p_value);
	real_t get_damping_compression() const;

	void set_damping_relaxation(real_t p_value);
	real_t get_damping_relaxation() const;

	void set_friction_slip(real_t p_value);
	real_t get_friction_slip() const;

	void set_use_as_traction(bool p_enable);
	bool is_used_as_traction() const;

	void set_use_as_steering(bool p_enabled);
	bool is_used_as_steering() const;

	bool is_in_contact() const;

	Node3D *get_contact_body() const;

	void set_roll_influence(real_t p_value);
	real_t get_roll_influence() const;

	real_t get_skidinfo() const;

	real_t get_rpm() const;

	void set_engine_force(real_t p_engine_force);
	real_t get_engine_force() const;

	void set_brake(real_t p_brake);
	real_t get_brake() const;

	void set_steering(real_t p_steering);
	real_t get_steering() const;

	TypedArray<String> get_configuration_warnings() const override;

	VehicleWheel3D();
};

class VehicleBody3D : public RigidDynamicBody3D {
	GDCLASS(VehicleBody3D, RigidDynamicBody3D);
Repository: godotengine/godot
File: platform/android/export/export_plugin.cpp (C++)

Code before:
}

zip_fileinfo EditorExportPlatformAndroid::get_zip_fileinfo() {
	OS::Time time = OS::get_singleton()->get_time();
	OS::Date date = OS::get_singleton()->get_date();

	zip_fileinfo zipfi;
	zipfi.tmz_date.tm_hour = time.hour;
	zipfi.tmz_date.tm_mday = date.day;
	zipfi.tmz_date.tm_min = time.minute;
	zipfi.tmz_date.tm_mon = date.month - 1; // tm_mon is zero indexed
	zipfi.tmz_date.tm_sec = time.second;
	zipfi.tmz_date.tm_year = date.year;
	zipfi.dosDate = 0;
	zipfi.external_fa = 0;
	zipfi.internal_fa = 0;

	return zipfi;
}

Vector<String> EditorExportPlatformAndroid::get_abis() {
	Vector<String> abis;
	abis.push_back("armeabi-v7a");
	abis.push_back("arm64-v8a");
	abis.push_back("x86");
	abis.push_back("x86_64");
	return abis;
}

/// List the gdap files in the directory specified by the p_path parameter.
Vector<String> EditorExportPlatformAndroid::list_gdap_files(const String &p_path) {
	Vector<String> dir_files;
	Ref<DirAccess> da = DirAccess::open(p_path);
	if (da.is_valid()) {
		da->list_dir_begin();
		while (true) {
			String file = da->get_next();
			if (file.is_empty()) {
				break;
			}

			if (da->current_is_dir() || da->current_is_hidden()) {
				continue;
			}

			if (file.ends_with(PluginConfigAndroid::PLUGIN_CONFIG_EXT)) {
				dir_files.push_back(file);
			}
		}
		da->list_dir_end();
	}

Review comment (suggestion):
I'm not sure this is correct to assume that `abis` == `env["arch"]` in this context.

The previous values were matching what's actually used by Android toolchains and if those are used as configuration values for gradle it might break exports.

CC @m4gr3d 

Code after:
}

zip_fileinfo EditorExportPlatformAndroid::get_zip_fileinfo() {
	OS::Time time = OS::get_singleton()->get_time();
	OS::Date date = OS::get_singleton()->get_date();

	zip_fileinfo zipfi;
	zipfi.tmz_date.tm_hour = time.hour;
	zipfi.tmz_date.tm_mday = date.day;
	zipfi.tmz_date.tm_min = time.minute;
	zipfi.tmz_date.tm_mon = date.month - 1; // tm_mon is zero indexed
	zipfi.tmz_date.tm_sec = time.second;
	zipfi.tmz_date.tm_year = date.year;
	zipfi.dosDate = 0;
	zipfi.external_fa = 0;
	zipfi.internal_fa = 0;

	return zipfi;
}

Vector<String> EditorExportPlatformAndroid::get_abis() {
	Vector<String> abis;
	abis.push_back("arm32");
	abis.push_back("arm64");
	abis.push_back("x86_32");
	abis.push_back("x86_64");
	return abis;
}

/// List the gdap files in the directory specified by the p_path parameter.
Vector<String> EditorExportPlatformAndroid::list_gdap_files(const String &p_path) {
	Vector<String> dir_files;
	Ref<DirAccess> da = DirAccess::open(p_path);
	if (da.is_valid()) {
		da->list_dir_begin();
		while (true) {
			String file = da->get_next();
			if (file.is_empty()) {
				break;
			}

			if (da->current_is_dir() || da->current_is_hidden()) {
				continue;
			}

			if (file.ends_with(PluginConfigAndroid::PLUGIN_CONFIG_EXT)) {
				dir_files.push_back(file);
			}
		}
		da->list_dir_end();
	}