fix handling of vulkan_gpu_list (use after free, not always being initialized)

This commit is contained in:
LazyBumHorse 2019-08-15 16:57:34 +02:00
parent f51e50a423
commit 3c6a46d95d

View File

@ -1603,9 +1603,6 @@ static bool vulkan_context_init_gpu(gfx_ctx_vulkan_data_t *vk)
union string_list_elem_attr attr = {0};
settings_t *settings = config_get_ptr();
if (vk->context.gpu != VK_NULL_HANDLE)
return true;
if (vkEnumeratePhysicalDevices(vk->context.instance,
&gpu_count, NULL) != VK_SUCCESS)
{
@ -1654,6 +1651,12 @@ static bool vulkan_context_init_gpu(gfx_ctx_vulkan_data_t *vk)
video_driver_set_gpu_api_devices(GFX_CTX_VULKAN_API, vulkan_gpu_list);
if (vk->context.gpu != VK_NULL_HANDLE)
{
free(gpus);
return true;
}
if (0 <= settings->ints.vulkan_gpu_index && settings->ints.vulkan_gpu_index < (int)gpu_count)
{
RARCH_LOG("[Vulkan]: Using GPU index %d.\n", settings->ints.vulkan_gpu_index);
@ -2690,6 +2693,7 @@ void vulkan_context_destroy(gfx_ctx_vulkan_data_t *vk,
}
}
video_driver_set_gpu_api_devices(GFX_CTX_VULKAN_API, NULL);
if (vulkan_gpu_list)
{
string_list_free(vulkan_gpu_list);