diff options
| -rw-r--r-- | loader/debug_report.c | 35 |
1 files changed, 29 insertions, 6 deletions
diff --git a/loader/debug_report.c b/loader/debug_report.c index f71896e7..b404a51a 100644 --- a/loader/debug_report.c +++ b/loader/debug_report.c @@ -215,14 +215,18 @@ VkResult util_CopyDebugReportCreateInfos( ((VkDebugReportCallbackEXT *)pAllocator->pfnAllocation( pAllocator->pUserData, n * sizeof(VkDebugReportCallbackEXT), sizeof(void *), VK_SYSTEM_ALLOCATION_SCOPE_OBJECT)); + if (!pCallbacks) { + pAllocator->pfnFree(pAllocator->pUserData, pInfos); + return VK_ERROR_OUT_OF_HOST_MEMORY; + } } else { #endif pCallbacks = *callbacks = ((VkDebugReportCallbackEXT *)malloc( n * sizeof(VkDebugReportCallbackEXT))); - } - if (!pCallbacks) { - free(pInfos); - return VK_ERROR_OUT_OF_HOST_MEMORY; + if (!pCallbacks) { + free(pInfos); + return VK_ERROR_OUT_OF_HOST_MEMORY; + } } // 4th, copy each VkDebugReportCallbackCreateInfoEXT for use by // vkDestroyInstance, and assign a unique handle to each callback (just @@ -244,8 +248,17 @@ VkResult util_CopyDebugReportCreateInfos( void util_FreeDebugReportCreateInfos(const VkAllocationCallbacks *pAllocator, VkDebugReportCallbackCreateInfoEXT *infos, VkDebugReportCallbackEXT *callbacks) { - free(infos); - free(callbacks); +#if (DEBUG_DISABLE_APP_ALLOCATORS == 1) + { +#else + if (pAllocator != NULL) { + pAllocator->pfnFree(pAllocator->pUserData, infos); + pAllocator->pfnFree(pAllocator->pUserData, callbacks); + } else { +#endif + free(infos); + free(callbacks); + } } VkResult util_CreateDebugReportCallbacks( @@ -450,6 +463,16 @@ VKAPI_ATTR void VKAPI_CALL terminator_DestroyDebugReportCallback( } storage_idx++; } + +#if (DEBUG_DISABLE_APP_ALLOCATORS == 1) + { +#else + if (pAllocator != NULL) { + pAllocator->pfnFree(pAllocator->pUserData, icd_info); + } else { +#endif + free(icd_info); + } } /* |
