diff options
| author | Lenny Komow <lenny@lunarg.com> | 2017-08-09 16:01:59 -0600 |
|---|---|---|
| committer | Lenny Komow <lenny@lunarg.com> | 2017-08-10 09:49:24 -0600 |
| commit | ab52839c51f2633eeb81943d300729f9c84e1e86 (patch) | |
| tree | 3b5ff81abe7f6c901e23d35e819537dd4783098d /loader/loader.c | |
| parent | 9b896deeb069344eb9491b289bba68892446c0db (diff) | |
| download | usermoji-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.c | 14 |
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); |
