layers: Reorder to prevent Null deref; add test
authorKarl Schultz <karl@lunarg.com>
Thu, 21 Apr 2016 21:57:51 +0000 (15:57 -0600)
committerKarl Schultz <karl@lunarg.com>
Thu, 21 Apr 2016 21:57:51 +0000 (15:57 -0600)
Found by running Hologram with validation and push constants
using args "-p -v".
Hologram is issuing a memory barrier in the push constants
mode.  This will be fixed in Hologram, but validation should
not be crashing.

Change-Id: I1e76c3fca0152fc3bf8c1de3db3b044f650c202f

layers/core_validation.cpp

index f7c1622..57e5731 100644 (file)
@@ -8427,10 +8427,10 @@ static bool ValidateBarriers(const char *funcName, VkCommandBuffer cmdBuffer, ui
         }
 
         auto buffer_data = dev_data->bufferMap.find(mem_barrier->buffer);
-        VkDeviceSize buffer_size = (buffer_data->second.createInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
-                                       ? buffer_data->second.createInfo.size
-                                       : 0;
         if (buffer_data != dev_data->bufferMap.end()) {
+            VkDeviceSize buffer_size = (buffer_data->second.createInfo.sType == VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO)
+                                           ? buffer_data->second.createInfo.size
+                                           : 0;
             if (mem_barrier->offset >= buffer_size) {
                 skip_call |= log_msg(
                     dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, (VkDebugReportObjectTypeEXT)0, 0, __LINE__,