loader: gh1449 - Fix mem leak on CTS
authorMark Young <marky@lunarg.com>
Fri, 3 Feb 2017 23:27:42 +0000 (16:27 -0700)
committerMark Young <marky@lunarg.com>
Fri, 3 Feb 2017 23:27:42 +0000 (16:27 -0700)
Fix a memory leak in the CTS test which fails randomly during
the vkCreateInstance call.

Change-Id: Ie72feac730d3854cb2af9e13a3687aa43081bfd5

loader/loader.c

index 81c37c4..b6adbb1 100644 (file)
@@ -5046,15 +5046,17 @@ VkResult setupLoaderTermPhysDevs(struct loader_instance *inst) {
 out:
 
     if (VK_SUCCESS != res) {
-        if (NULL != inst->phys_devs_term) {
-            // We've encountered an error, so we should free the
-            // new buffers.
+        if (NULL != new_phys_devs) {
+            // We've encountered an error, so we should free the new buffers.
             for (uint32_t i = 0; i < inst->total_gpu_count; i++) {
                 loader_instance_heap_free(inst, new_phys_devs[i]);
             }
+            loader_instance_heap_free(inst, new_phys_devs);
+        }
+        if (NULL != inst->phys_devs_term) {
             loader_instance_heap_free(inst, inst->phys_devs_term);
-            inst->total_gpu_count = 0;
         }
+        inst->total_gpu_count = 0;
     } else {
         // Free everything that didn't carry over to the new array of
         // physical devices.  Everything else will have been copied over