Storage, common_rename: check that old path is exists (#2698)

* Storage, common_rename: check that old path is exists
* Storage, common_rename: return correct status
This commit is contained in:
Sergey Gavrilov 2023-05-25 06:44:32 -07:00 committed by GitHub
parent 3217f286f0
commit 88f0b63577
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -424,19 +424,25 @@ FS_Error storage_common_remove(Storage* storage, const char* path) {
FS_Error storage_common_rename(Storage* storage, const char* old_path, const char* new_path) { FS_Error storage_common_rename(Storage* storage, const char* old_path, const char* new_path) {
FS_Error error; FS_Error error;
if(storage_file_exists(storage, new_path)) { do {
error = storage_common_remove(storage, new_path); if(!storage_common_exists(storage, old_path)) {
if(error != FSE_OK) { error = FSE_INVALID_NAME;
return error; break;
}
if(storage_file_exists(storage, new_path)) {
storage_common_remove(storage, new_path);
}
error = storage_common_copy(storage, old_path, new_path);
if(error != FSE_OK) {
break;
} }
}
error = storage_common_copy(storage, old_path, new_path);
if(error == FSE_OK) {
if(!storage_simply_remove_recursive(storage, old_path)) { if(!storage_simply_remove_recursive(storage, old_path)) {
error = FSE_INTERNAL; error = FSE_INTERNAL;
} }
} } while(false);
return error; return error;
} }