diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2022-04-12 10:39:54 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-12 10:39:54 +0200 |
commit | f586e06f7b7b1066bc234198a6c11123927cb87c (patch) | |
tree | ea9684d5549f9fc9439ffaf438373f5ca5608a9a /core/io/dir_access.cpp | |
parent | 2f7edae2b3064714b2e0fe8302366abc658955ce (diff) | |
parent | 4bf99f4af2c4918883c4382ead7de275fae21eea (diff) |
Merge pull request #60166 from bruvzg/narrow_file_access
Diffstat (limited to 'core/io/dir_access.cpp')
-rw-r--r-- | core/io/dir_access.cpp | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/core/io/dir_access.cpp b/core/io/dir_access.cpp index dd994fe2fb..433a7efb21 100644 --- a/core/io/dir_access.cpp +++ b/core/io/dir_access.cpp @@ -275,27 +275,29 @@ String DirAccess::get_full_path(const String &p_path, AccessType p_access) { Error DirAccess::copy(String p_from, String p_to, int p_chmod_flags) { //printf("copy %s -> %s\n",p_from.ascii().get_data(),p_to.ascii().get_data()); Error err; - Ref<FileAccess> fsrc = FileAccess::open(p_from, FileAccess::READ, &err); - ERR_FAIL_COND_V_MSG(err != OK, err, "Failed to open " + p_from); - - Ref<FileAccess> fdst = FileAccess::open(p_to, FileAccess::WRITE, &err); - ERR_FAIL_COND_V_MSG(err != OK, err, "Failed to open " + p_to); - - fsrc->seek_end(0); - int size = fsrc->get_position(); - fsrc->seek(0); - err = OK; - while (size--) { - if (fsrc->get_error() != OK) { - err = fsrc->get_error(); - break; - } - if (fdst->get_error() != OK) { - err = fdst->get_error(); - break; - } + { + Ref<FileAccess> fsrc = FileAccess::open(p_from, FileAccess::READ, &err); + ERR_FAIL_COND_V_MSG(err != OK, err, "Failed to open " + p_from); + + Ref<FileAccess> fdst = FileAccess::open(p_to, FileAccess::WRITE, &err); + ERR_FAIL_COND_V_MSG(err != OK, err, "Failed to open " + p_to); + + fsrc->seek_end(0); + int size = fsrc->get_position(); + fsrc->seek(0); + err = OK; + while (size--) { + if (fsrc->get_error() != OK) { + err = fsrc->get_error(); + break; + } + if (fdst->get_error() != OK) { + err = fdst->get_error(); + break; + } - fdst->store_8(fsrc->get_8()); + fdst->store_8(fsrc->get_8()); + } } if (err == OK && p_chmod_flags != -1) { |