loader: Don't load manifest files more than once

Change-Id: I2802ad0c1fd16c0287ed24b96ec6d81c4b3c711a
diff --git a/loader/loader.c b/loader/loader.c
index 10a36cd..6d013de 100644
--- a/loader/loader.c
+++ b/loader/loader.c
@@ -3087,7 +3087,16 @@
             // 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 @@
                 }
                 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);