aboutsummaryrefslogtreecommitdiff
path: root/loader/loader.c
diff options
context:
space:
mode:
authorLenny Komow <lenny@lunarg.com>2017-08-09 16:01:59 -0600
committerLenny Komow <lenny@lunarg.com>2017-08-10 09:49:24 -0600
commitab52839c51f2633eeb81943d300729f9c84e1e86 (patch)
tree3b5ff81abe7f6c901e23d35e819537dd4783098d /loader/loader.c
parent9b896deeb069344eb9491b289bba68892446c0db (diff)
downloadusermoji-ab52839c51f2633eeb81943d300729f9c84e1e86.tar.xz
loader: Don't load manifest files more than once
Change-Id: I2802ad0c1fd16c0287ed24b96ec6d81c4b3c711a
Diffstat (limited to 'loader/loader.c')
-rw-r--r--loader/loader.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/loader/loader.c b/loader/loader.c
index 10a36cde..6d013def 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -3087,7 +3087,16 @@ static VkResult loader_get_manifest_files(const struct loader_instance *inst, co
// Look for files ending with ".json" suffix
uint32_t nlen = (uint32_t)strlen(name);
const char *suf = name + nlen - 5;
- if ((nlen > 5) && !strncmp(suf, ".json", 5)) {
+
+ // Check if the file is already present
+ bool file_already_loaded = false;
+ for (uint32_t i = 0; i < out_files->count; ++i) {
+ if (!strcmp(out_files->filename_list[i], name)) {
+ file_already_loaded = true;
+ }
+ }
+
+ if (!file_already_loaded && (nlen > 5) && !strncmp(suf, ".json", 5)) {
if (out_files->count == 0) {
out_files->filename_list =
loader_instance_heap_alloc(inst, alloced_count * sizeof(char *), VK_SYSTEM_ALLOCATION_SCOPE_COMMAND);
@@ -3122,6 +3131,9 @@ static VkResult loader_get_manifest_files(const struct loader_instance *inst, co
}
strcpy(out_files->filename_list[out_files->count], name);
out_files->count++;
+ } else if(file_already_loaded) {
+ loader_log(inst, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0,
+ "Skipping manifest file %s - The file has already been read once", name);
} else if (!list_is_dirs) {
loader_log(inst, VK_DEBUG_REPORT_WARNING_BIT_EXT, 0, "Skipping manifest file %s, file name must end in .json",
name);