summaryrefslogtreecommitdiffstats
path: root/modules/mono/godotsharp_dirs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'modules/mono/godotsharp_dirs.cpp')
-rw-r--r--modules/mono/godotsharp_dirs.cpp12
1 files changed, 9 insertions, 3 deletions
diff --git a/modules/mono/godotsharp_dirs.cpp b/modules/mono/godotsharp_dirs.cpp
index 80e44011be..039263b405 100644
--- a/modules/mono/godotsharp_dirs.cpp
+++ b/modules/mono/godotsharp_dirs.cpp
@@ -192,9 +192,15 @@ 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);
- ERR_FAIL_NULL(da);
+ // 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);
}
api_assemblies_dir = data_dir_root;