Commit d8022d19b4bf1a73b3d17737f68fdd154dbd43c8

Alex Szpakowski 2018-10-12T23:23:52

macOS: Fixed MoltenVK dynamic library loading code.

diff --git a/src/video/cocoa/SDL_cocoavulkan.m b/src/video/cocoa/SDL_cocoavulkan.m
index 2cf55bb..0e53d21 100644
--- a/src/video/cocoa/SDL_cocoavulkan.m
+++ b/src/video/cocoa/SDL_cocoavulkan.m
@@ -58,8 +58,7 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
     PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = NULL;
 
     if (_this->vulkan_config.loader_handle) {
-        SDL_SetError("Vulkan/MoltenVK already loaded");
-        return -1;
+        return SDL_SetError("Vulkan/MoltenVK already loaded");
     }
 
     /* Load the Vulkan loader library */
@@ -80,6 +79,7 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
         _this->vulkan_config.loader_handle = DEFAULT_HANDLE;
     } else {
         const char** paths;
+        const char *foundPath = NULL;
         int numPaths;
         int i;
 
@@ -92,18 +92,17 @@ int Cocoa_Vulkan_LoadLibrary(_THIS, const char *path)
             paths = defaultPaths;
             numPaths = SDL_arraysize(defaultPaths);
         }
-        
-        for (i=0; i < numPaths; i++) {
-            _this->vulkan_config.loader_handle = SDL_LoadObject(paths[i]);
-            if (_this->vulkan_config.loader_handle)
-                break;
-            else
-                continue;
+
+        for (i = 0; i < numPaths && _this->vulkan_config.loader_handle == NULL; i++) {
+            foundPath = paths[i];
+            _this->vulkan_config.loader_handle = SDL_LoadObject(foundPath);
+        }
+
+        if (_this->vulkan_config.loader_handle == NULL) {
+            return SDL_SetError("Failed to load Vulkan/MoltenVK library");
         }
-        if (i == numPaths)
-            return -1;
 
-        SDL_strlcpy(_this->vulkan_config.loader_path, paths[i],
+        SDL_strlcpy(_this->vulkan_config.loader_path, foundPath,
                     SDL_arraysize(_this->vulkan_config.loader_path));
         vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)SDL_LoadFunction(
             _this->vulkan_config.loader_handle, "vkGetInstanceProcAddr");