summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--modules/mono/godotsharp_dirs.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp
index 3935854a29..039263b405 100644
--- a/modules/mono/godotsharp_dirs.cpp
+++ b/modules/mono/godotsharp_dirs.cpp
@@ -192,8 +192,14 @@ private:
}
}
if (!has_data) {
- // 3. Extract the data to a temporary location to load from there.
- Ref<DirAccess> da = DirAccess::create_for_path(packed_path);
+ // 3. Extract the data to a temporary location to load from there, delete old data if it exists but is not up-to-date.
+ Ref<DirAccess> da;
+ if (DirAccess::exists(data_dir_root)) {
+ da = DirAccess::open(data_dir_root);
+ ERR_FAIL_COND(da.is_null());
+ ERR_FAIL_COND(da->erase_contents_recursive() != OK);
+ }
+ da = DirAccess::create_for_path(packed_path);
ERR_FAIL_COND(da.is_null());
ERR_FAIL_COND(da->copy_dir(packed_path, data_dir_root) != OK);
}