From 19dbfec777066015866433c14f9bd8713b95d3dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pa=CC=84vels=20Nadtoc=CC=8Cajevs?= <7645683+bruvzg@users.noreply.github.com> Date: Sun, 3 Aug 2025 19:52:48 +0300 Subject: [PATCH] Fix symlink copy in `DirAccess::copy_dir`. --- core/io/dir_access.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/core/io/dir_access.cpp b/core/io/dir_access.cpp index 0b9a1e3a457..cd46a5a3d11 100644 --- a/core/io/dir_access.cpp +++ b/core/io/dir_access.cpp @@ -490,19 +490,22 @@ Error DirAccess::_copy_dir(Ref &p_target_da, const String &p_to, int while (!n.is_empty()) { if (n != "." && n != "..") { if (p_copy_links && is_link(get_current_dir().path_join(n))) { - create_link(read_link(get_current_dir().path_join(n)), p_to + n); + Error err = p_target_da->create_link(read_link(get_current_dir().path_join(n)), p_to + n); + if (err) { + ERR_PRINT(vformat("Failed to copy symlink \"%s\".", n)); + } } else if (current_is_dir()) { dirs.push_back(n); } else { const String &rel_path = n; if (!n.is_relative_path()) { list_dir_end(); - return ERR_BUG; + ERR_FAIL_V_MSG(ERR_BUG, vformat("BUG: \"%s\" is not a relative path.", n)); } Error err = copy(get_current_dir().path_join(n), p_to + rel_path, p_chmod_flags); if (err) { list_dir_end(); - return err; + ERR_FAIL_V_MSG(err, vformat("Failed to copy file \"%s\".", n)); } } }